Menggunakan Command “FIND” di Linux

Command find di Linux merupakan alat bantu pencarian yang sangat fleksibel dan powerful yang bisa dimanfaatkan oleh semua user tidak terbatas hanya pada administrator saja. Kali ini kita akan mencoba berbagi tentang penggunaan command find ini dan variasi-variasinya.

Mencari berdasarkan filename

Dengan nama yang harfiah
Sebagai contoh: kita ingin mencari file dengan nama README.txt di home directory, kita mengetikkan:

find /home -name README.txt

Penggunaan ekspresi -name pada command diatas menghasilkan keluaran yang case sensitive.

Untuk mengabaikan case sensitivity, silahkan menggunakan command berikut:

find / -iname README.txt


Menggunakan regex (regular expression)

Penggunaan regex sangat berguna ketika kita mencari tipe file tertentu. Sebagai contoh bila kita ingin mencari semua file *.txt di home directory, kita dapat mengetikkan command sebagai berikut:

Baca Juga:  Belajar Linux: Menggunakan Terminal/Command Line Part. 2

find /home -regextype posix-extended -regex ".*\.txt"

Penggunaan regex sangat fleksibel menurut keinginan kita. Kita bisa mencari semua file *.txt dan *.log dengan command berikut:

find /home -regextype posix-extended -regex ".*(\.txt|\.log)"

atau ingin mencari file yang mengandung angka pada namanya:

find /home -regextype posix-extended -regex ".*[0-9]"

Lebih spesifik lagi, bahkan kita bisa mencari file yang namanya terbentuk dari tanggal dengan menentukan repetisi yang mungkin dari setiap range angka seperti command di bawah ini:

find /home -regextype posix-extended -regex ".*[0-9]{2}-[0-9]{2}-[0-9]{4}.*"

Angka pada kurung kurawal menandakan banyaknya repetisi yang mungkin dari setiap range angka. Command di atas menyatakan bahwa kita mencari file dengan format penamaan *xx-xx-xxxx*

Mencari berdasarkan properti nya

Properti Waktu Dalam Menit
Bila ingin mencari file yang telah dimodifikasi dalam rentang waktu 30 menit terakhir:

find /home -mmin -30

Untuk file yang dimodifikasi tepat 30 menit yang lalu:

find /home -mmin 30

Kalau untuk mencari file berdasarkan access time (bukan modified time), command nya hampir sama. Bedanya di ekspresi -mmin diganti dengan -amin

find /home -amin -30

Untuk file yang mengalami perubahan (change time) ekspresinya menggunakan -cmin. Jangan bingung beda antara modified time dan change timeChange time mencatat waktu perubahan status dari sebuah file seperti permission change atau owner changeCommand nya seperti ini:

find /home -cmin -30


Properti Waktu Dalam
Hari
Dengan command yang mirip dengan pencarian berbasis waktu dalam menit, pencarian dengan basis waktu dalam hari menggunakan ekspresi *time untuk menggantikan ekspresi *min. Contoh bila ingin mencari file yang dimodifikasi antara hari ini dan kemarin, kita mengetikkan:

find /home -mtime 0


Berdasarkan permissi
on nya
Kita dapat mencari file berdasarkan kepemilikan (ownership) baik user maupun group dan juga berdasarkan permission nya.

find /home -user adisun
find /home -group sysadmin
find / -perm 777

untuk command find / -perm 777 akan menemukan file yang memiliki permission  777. Bila ingin menemukan file yang memiliki permission yang sesuai dengan (minimal) salah satu permission bits, kita bisa menggunakan command:

find / -perm /755

command di atas akan menemukan file yang readable, writeable dan executeable oleh ownerataureadable dan executeable oleh groupatau readable dan executeable oleh user yang lain (menggunakan logika OR).

Selain itu kita juga bisa menggunakan symbolic notation untuk menemukan file berdasarkan permission:

find / -perm a=rwx
find / -perm u=rwx,g=rwx,o=rwx
find / -perm +u+rwx,+g+rwx,+o+rwx

 Ketiga command di atas sama dengan find / -perm 777

find / -perm /u=rwx,g=rx,o=rx

command di atas sama dengan find / -perm /755


Berdasarkan tipe file
 nya
Ketika kita menggunakan command find, keluaran yang dihasilkan juga menampilkan folder. By default, command find akan mencari seluruh file yang cocok dengan kriteria yang dicari apapun tipenya. Kalau kita hanya mencari tipe file tertentu, kita bisa menggunakan ekspresi -type seperti contoh di bawah ini:

find / -perm a=rwx -type f

command di atas hanya akan mencari file reguler saja. Berikut tipe-tipe file yang bisa digunakan dengan command find:

  • d: directory
  • f: regular file
  • l: symbolic link
  • b: buffered block
  • c: unbuffered character
  • p: named pipe
  • s: socket


Berdasarkan ukuran

Mencari file berdasarkan ukuran akan sangat berguna bila kita ingin mengelola space di Linux Box kita. Sebagai contoh bila kita ingin mencari file yang berukuran lebih besar dari 20 MB di folder /var/log, kita bisa memanggil command sebagai berikut:

find /var/log -size +20M

Kita bisa menggunakan satuan-satuan berbeda seperti:

  • b: 512-byte blocks (dipakai secara default bila tidak ada satuan lain yang digunakan)
  • c: bytes
  • k: kilobytes
  • M: megabytes
  • G: gigabytes


Menggunakan kondisi



Kita juga dapat menggunakan gerbang logika AND, NOT dan OR pada penggunaan command find.

find / -size +10M -and -name "*.txt"
find / -perm 777 -not -user root
find / -user developer -or -group development

command di atas secara berurutan memiliki tujuan:

  • Cari file yang berukuran lebih besar dari 10 MB dan berekstensi .txt
  • Cari file dengan permission 777 yang bukan dimiliki oleh user root
  • Cari file yang merupakan milik user developer atau milik group development

Penggunaan ekspresi -and secara default tidak perlu dituliskan dalam penggunaan gerbang logika AND. Perhatikan contoh di bawah ini.

find / -size +10M -name "*.txt"

command di atas hasilnya akan sama dengan: 

find / -size +10M -and -name "*.txt"


Melakukan action dengan command exec


Fitur yang paling powerful dari command find adalah penggunaan opsi -exec yang membolehkan kita mengeksekusi command untuk file yang sudah ditemukan. Salah satu contoh yang paling sering dipakai adalah menampilkan informasi dari hasil pencarian dengan command ls.

find / -size +500M -exec ls -l {} \;

Selain dengan menambahkan command setelah opsi -exec, kita juga harus menambahkan {}, dimana keluaran/hasil pencarian dengan command find akan ditampung. Dan juga tanda titik koma (;) sebagai tanda akhir dari command tersebut. Kita bisa menautkan beberapa command -exec setelah tanda akhir dari command sebelumnya (;).


Beberapa command yang berguna dan sering digunakan


Menghapus file log yang berukuran besar dan sudah lama

find / -iname "*.log" -mtime +1 -size +10M -exec rm {} \;

Memperbaiki permission 777

find / -perm 777 -exec chmod 755 {} \;

Menghapus folder kosong

find / -type d -empty -exec rm --dir {} \;

Mencari 10 file terbesar

find / -type f -exec ls -s {} \; | sort -n -r | head -10

Menghapus broken symbolic link 

find / -xtype l -exec rm {} \;
About This Author

IT Engineer, Red Hat Certified System Administrator & Technician (RHCT & RHCSA), Certified Data Center Facilities Operation Manager (CDFOM), Certified Ethical Hacking (CEH), expert in Computer Networking in multi operating system and hardware. Specialties: Linux, Free BSD, *Nix, MS Windows, Data Center, Cisco & Computer Networking

Post A Reply