Ketika komputer sudah lama dan dipenuhi oleh berkas-berkas, pada waktu tertentu kita ingin mengakses berkas tersebut lalu lupa. Dikarenakan sudah lama tidak dilihat, wajar saja demikian. Saya sendiri pun juga pernah mengalami hal itu. Di samping itu, saya hanya mengingat kata kuncinya saja. Jika Anda mengalami hal yang sama, artinya kita butuh semacam aplikasi pencarian berkas.

Setiap sistem operasi yang dilengkapi oleh penyimpanan berkas pasti memiliki fitur pencarian. Pencarian berkas umumnya sudah terintegrasi dari file manager seperti Windows Explorer pada Windows dan Finder pada macOS. Lalu bagaimana dengan GNU/Linux? Sama dengan OS lainnya GNU/Linux juga pada file manager-nya juga terintegrasi dengan fitur pencarian contohnya pada Nautilus.

Pengguna GNU/Linux selalu lekat dengan console atau terminal. Meski sudah banyak GUI, tetap saja perintah pada console atau terminal wajib kita ketahui. Nah, berikut ini saya akan memberikan contoh-contoh pencarian suatu berkas tanpa menggunakan aplikasi GUI, yakni cukup menggunakan aplikasi bawaah yakni find.

Seperti yang diketahui, hampir seluruh distribusi GNU/Linux pasti menyertakan find oleh karena itu, tutorial ini bisa kita pakai pada distribusi GNU/Linux manapun, karena perintahnya semuanya sama.

Oke, Langsung saja berikut ini contohnya:

Mencari Dalam _Directory_.

Pada saat menggunakan perintah `find` saja, ia secara otomatis akan menunjukan semua berkas yang berada sesuai dengan direktori di mana Anda berada (_current directory_) disertai dengan subdirektori di dalamnya dalam bentuk _list_.
$ find

Kalau kita ingin spesifik pada direktori tertentu tinggal tambahkan saja nama direktorinya contohnya

$ find /tmp

Secara asali, semua perintah find akan selalu mencari berkas pada direktori berserta subdirektori yang berada di dalamnya. Bagaimana jika kita tidak ingin menyertakan subdirektori pada saat mencari berkas? Cukup tambahkan perintah -maxdepth 1.

Berikut ini contoh perintahnya:

$ find /tmp -maxdepth 1

Pada saat pencarian, pastikan yang ingin kita cari sesuaikan dengan permission-nya. Jika kita ingin mencari seluruh berkas dari root / , gunakan perintah sudo.

$ sudo find /

Mencari Hanya Direktori atau Berkas Saja

Sederhananya perintah `find` akan selalu menampilkan semua berkas dan direktori. Jika kita ingin mencari hanya direktori saja, cukup gunakan perintah `-type d`.
$ find . -type d
Sedangkan kalau untuk berkas (_file_) saja ganti menjadi `-type f`.
$ find . -type f

Spesifik dari Nama

Kalau perintah `find` saja atau `find /nama_direktori` ia hanya akan menampilkan seluruh berkas, untuk mencari berkas berdasarkan suatu nama tertentu kita bisa tambahkan dengan perintah `-name "nama_yg_ingin_dicari"`. Contohnya:
$ find ~ -name "situsali.jpg"
Kita pun dapat mencari berkas berdasarkan ekstensinya. Contoh:
$ find ~ -name "*.jpg"
Atau mencari yang lebih spesifik lagi misalnya berkas yang diawali huruf `a` dengan ekstensi `.jpg`.
$ find ~ -name "a*.jpg"
Perlu diketahui perintah `-name` hanya akan mencari berdasarkan karakternya atau _case-sensitive,_ dengan kata lain, jika kita mencari berkas yang berawalan huruf `a` maka `A` (dengan kapital) tidak akan ditampilkan. Oleh karena itu, untuk pencarian berkas tanpa spesifik huruf kapital atau kecil, kita bisa menggunakan perintah `-iname`. Contohnya:
$ find ~ -iname "a*jpg"

Sesuai Kondisi OR, AND atau NOT

Kalau tadi kita mencari berdasarkan spesifik dari suatu nama, sekarang disesuaikan dengan kondisinya. Maksudnya begini, contoh ketika kita ingin mencari berkas yang hanya berekstensi `.jpg`, `.txt`, `.png`, dan `.mp3` kita bisa menggunakan perintah `-o` yang berarti **OR** .
$ find . -name "*.jpg" -o -name "*.txt" -o -name "*.png" -o -name "*.mp3"
Perintah `-o` bisa kita gunakan sebanyak-banyaknya disesuaikan dengan kondisi yang kita inginkan.

Kalau ingin mencari berdasarkan dua kriteria bisa gunakan AND yakni dengan perintah -a. Contohnya kita hanya ingin mencari berkas, yang berawalan huruf S baik kapital atau bukan dan mengandung kata ali.

$ find ~/Pictures/ -iname "s*" -a -name "*ali*"

Perintah -a juga bisa kita gunakan sebanyak-banyaknya disesuaikan dengan kondisi yang kita inginkan.

Kemudian kalau ingin mencari semua berkas kecuali berkas tertentu, gunakan perintah -not. Contohnya, kita ingin mencari seluruh berkas kecuali yang berekstensi .jpg.

$ find . -not -name "*.jpg"

Penggunaan -not sama halnya dengan -o atau -a dapat kita gunakan sebanyak-banyaknya. Contoh ingin mengecualikan 3 ekstensi.

$ find . -not -name "*.jpg" -not -name "*.txt" -not -name "*.png"

Berdasarkan _Permission_-nya

Untuk mencari berkas berdasarkan permission yang ia gunakan kita bisa menggunakan perintah berikut:
$ find . -perm 0644
Atau berdasarkan penamaan UGO (_User, Group, Other_). Contohnya, kita ingin mencari berdasarkan _permission_ `rw` pada _user_:
$ find . -perm u=rw,g=r,o=r
Kita bisa tambahkan `/` yang artinya _likely_, contohnya:
$ find . -perm /u=rw
Atau berkas yang memiliki _special permission_ seperti SGID:
$ find . -perm /u=s

Berdasarkan _User_ atau _Group_ Tertentu

Perintah di atas kita hanya mengetahui berdasarkan permissionnya saja tanpa peduli dari _user_ atau _grup_ mana. Jika ingin lebih menspesifikasikan lagi berdasarkan pada _user_ atau _group_ terntu kita bisa gunakan perintah:
$ find . -user situsali
Berdasarkan _group_:
$ find . -group users

Berdasarkan _File Size_

Perintah sederhana berdasarkan ukuran besarnya suatu berkas (file size) kita bisa menggunakan perintah `-size` Contohnya:
$ find . -size -10M
Perhatikan perintah di atas `-10M` artinya berkas yang berukuran kurang dari 10 Megabyte. Jika ingin lebih dari 10 Megabyte ganti dengan `+10M`.

Keterangan lebih lanjut bisa Anda lihat dari man find.

Perhatian jika kita ingin mencari berkas yang berukuran kurang dari 1M, kita tidak bisa menggunakan perintah -1M. Cukup tulis 1M saja atau -not -size +1M.

$ find . -size 1M

Atau

$ find . -not -size +1M

Perintah -size ini juga bisa kita gunakan dengan dua buah kriteria. Contoh kita ingin mencari berkas yang berukuran lebih dari 2 Megabyte dan kurang dari 10 Megabyte.

$ find . -size +2M -size -10M

Berdasarkan _Access_ dan _Modify_

Mungkin kita hanya mengingat bahwa berkas pernah diakses pada 7 hari yang lalu.
$ find ~ -atime 7
Atau pernah dimodifikasi pada 8 hari yang lalu.
$ find ~ -mtime 8

Mencari Berkas atau Direktori yang Kosong

Untuk berkas kosong
$ find . -type f -empty
Sedangkan direktory kosong
$ find . -type d -empty
Oke itu saja dulu perintah dasar-dasar penggunaan `find` untuk mencari berkas. Artikel selanjutnya kita akan membahas mengenai `find` yang dikombinasikan dengan perintah lain juga kombinasi dengan regex (_regular expression_).