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:
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 time. Change time mencatat waktu perubahan status dari sebuah file seperti permission change atau owner change. Command 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 permission 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 owner; ataureadable dan executeable oleh group; atau 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 {} \;
Post A Reply