Topik ini membahas perintah find sebagai alat utama untuk menemukan berkas dan direktori di dalam pohon sistem berkas, mulai dari penelusuran sederhana hingga penyaringan menurut nama, tipe, dan ukuran. Perintah ini bekerja dengan mengunjungi seluruh cabang di bawah sebuah path awal, sehingga hasilnya selalu mutlak terhadap keadaan sistem berkas saat itu. Di bagian akhir, perintah locate diperkenalkan sebagai alternatif yang lebih cepat namun bergantung pada indeks. Struktur contohnya berupa arsip cadangan berisi dokumen laporan dan berkas foto, dan setiap penyaring dapat diikuti langsung pada struktur tersebut.
Menelusuri pohon dengan find#
Perintah find menerima argumen pertama berupa path awal, lalu mencetak setiap berkas dan direktori yang ditemui di bawahnya. Tanpa penyaring tambahan, keluarannya adalah seluruh isi pohon mulai dari path awal itu sendiri. Struktur contoh berikut dibuat lebih dahulu, lalu ditelusuri utuh oleh find.
# membuat struktur arsip cadangan untuk topik ini
mkdir -p arsip-cadangan/dokumen/lama arsip-cadangan/foto
printf 'Arsip laporan 2024\n' > arsip-cadangan/dokumen/laporan-2024.txt
printf 'isi laporan 2025\n' > arsip-cadangan/dokumen/laporan-2025.txt
printf 'isi draf laporan\n' > arsip-cadangan/dokumen/lama/draf-laporan.txt
printf 'isi catatan umum\n' > arsip-cadangan/catatan.txt
seq 1 300 > arsip-cadangan/foto/rapat-2025.png
seq 1 150 > arsip-cadangan/foto/liburan.jpg
# menelusuri seluruh pohon arsip, hasil diurutkan dengan sort
find arsip-cadangan | sortarsip-cadangan
arsip-cadangan/catatan.txt
arsip-cadangan/dokumen
arsip-cadangan/dokumen/lama
arsip-cadangan/dokumen/lama/draf-laporan.txt
arsip-cadangan/dokumen/laporan-2024.txt
arsip-cadangan/dokumen/laporan-2025.txt
arsip-cadangan/foto
arsip-cadangan/foto/liburan.jpg
arsip-cadangan/foto/rapat-2025.pngSetiap baris keluaran berupa path relatif terhadap path awal, dan direktori serta berkas dicetak bercampur tanpa penanda tipe. Urutan baris keluaran find mengikuti urutan penelusuran internalnya atas direktori dan tidak dijamin berurutan menurut abjad, sehingga seluruh contoh pada topik ini melewatkan hasilnya ke sort agar daftarnya mudah dibaca dan mudah dibandingkan. Apabila path awal tidak disebutkan, GNU find menelusuri direktori kerja, tetapi kebiasaan yang lebih aman adalah menyebut path awal secara eksplisit agar lingkup pencarian tidak menggantung pada posisi sekarang. Keluaran tanpa penyaring seperti ini juga berguna sebagai gambaran awal, karena kerangka pohon yang baru dibuat mudah diperiksa sebelum penyaring yang lebih spesifik dirumuskan.
Memfilter menurut nama dengan -name#
Opsi -name menyaring entri menurut pola namanya, dan pola tersebut menggunakan karakter wildcard yang sama seperti pada shell, yaitu * untuk sembarang deret karakter dan ? untuk satu karakter. Pola perlu diapit tanda kutip tunggal agar shell tidak memperluasnya terlebih dahulu, karena penyaringan pola adalah tugas find, bukan tugas shell.
# mencari seluruh berkas laporan di seluruh tingkat
find arsip-cadangan -name 'laporan*.txt' | sortarsip-cadangan/dokumen/laporan-2024.txt
arsip-cadangan/dokumen/laporan-2025.txt# mencari berkas dengan akhiran tertentu
find arsip-cadangan -name '*.png' | sortarsip-cadangan/foto/rapat-2025.pngKedua keluaran memperlihatkan sifat penting pola -name, yaitu pencocokan berlaku pada seluruh tingkat di bawah path awal, bukan hanya tingkat pertama. Pencocokan juga mencakup berkas di dalam subdirektori lama, sehingga satu pola sudah cukup untuk menjangkau seluruh cabang. Pola laporan*.txt menemukan dua berkas laporan tahunan, sedangkan draf laporan pada dokumen/lama tidak ditemukan karena namanya tidak diawali kata laporan. Apabila penulisan huruf besar kecilnya tidak dapat dipastikan, opsi -iname melakukan pencocokan yang mengabaikan perbedaan huruf besar dan kecil.
Memfilter menurut tipe dengan -type#
Opsi -type menyaring entri menurut jenisnya, dan dua jenis yang paling sering digunakan adalah f untuk berkas biasa serta d untuk direktori. Keluaran -type d pada struktur contoh memperlihatkan kerangka pohonnya saja, sedangkan -type f memperlihatkan berkasnya saja.
# hanya direktori
find arsip-cadangan -type d | sortarsip-cadangan
arsip-cadangan/dokumen
arsip-cadangan/dokumen/lama
arsip-cadangan/foto# hanya berkas biasa
find arsip-cadangan -type f | sortarsip-cadangan/catatan.txt
arsip-cadangan/dokumen/lama/draf-laporan.txt
arsip-cadangan/dokumen/laporan-2024.txt
arsip-cadangan/dokumen/laporan-2025.txt
arsip-cadangan/foto/liburan.jpg
arsip-cadangan/foto/rapat-2025.pngMenyebut lebih dari satu opsi berarti seluruh syarat berlaku serentak, karena find hanya mencetak entri yang lolos semua penyaring. Contoh berikut menggabungkan tipe dan nama sekaligus, sehingga hanya berkas gambar JPEG yang muncul walaupun pola namanya tanpa informasi tipe.
# tipe dan nama dipakai bersamaan
find arsip-cadangan -type f -name '*.jpg' | sortarsip-cadangan/foto/liburan.jpgSelain f dan d, opsi -type mengenal jenis lain seperti l untuk tautan simbolik, tetapi dua jenis itu sudah mencakup hampir seluruh kebutuhan pencarian harian. Pencarian direktori pun biasanya digabung dengan -name, misalnya mencari seluruh direktori bernama tertentu di dalam pohon arsip yang besar. Pola kerja yang lazim adalah menelusuri direktori terlebih dahulu untuk memahami kerangkanya, lalu beralih ke -type f ketika berkas yang diinginkan sudah jelas jenisnya.
Memfilter menurut ukuran dengan -size#
Opsi -size menyaring entri menurut ukurannya, dan satuan ditulis di akhir angka, misalnya c untuk byte, k untuk kibibyte, M untuk mebibyte, dan G untuk gibibyte. Tanda plus berarti lebih besar dari nilai itu, tanda minus berarti lebih kecil, sedangkan tanpa tanda berarti tepat sebesar nilai tersebut. Tanpa akhiran satuan apa pun, angka dihitung dalam satuan blok 512 byte, sehingga menyebut satuan secara eksplisit menghindari salah tafsir. Dua berkas foto pada struktur contoh sengaja dibuat berukuran ratusan byte, sedangkan berkas teksnya hanya belasan byte.
# berkas yang lebih besar dari 100 byte
find arsip-cadangan -type f -size +100c | sortarsip-cadangan/foto/liburan.jpg
arsip-cadangan/foto/rapat-2025.png# berkas yang lebih kecil dari 100 byte
find arsip-cadangan -type f -size -100c | sortarsip-cadangan/catatan.txt
arsip-cadangan/dokumen/lama/draf-laporan.txt
arsip-cadangan/dokumen/laporan-2024.txt
arsip-cadangan/dokumen/laporan-2025.txtKeluaran pertama hanya memuat kedua berkas foto, sedangkan keluaran kedua memuat seluruh berkas teks. Apabila berkas yang tepat sebesar batas juga diinginkan, bentuk tanpa tanda seperti -size 100c menyaring ukuran yang persis sama. Penyaring ukuran lazim digabung dengan -name dan -type, misalnya mencari berkas berakhiran .png yang lebih besar dari suatu batas, dan aturan penggabungannya tetap sama, yaitu semua syarat harus lolos serentak.
Mengenali locate#
Perintah locate mencari nama berkas pada seluruh sistem melalui basis data indeks yang sudah jadi, sehingga prosesnya jauh lebih cepat daripada find yang harus mengunjungi setiap direktori. Indeks tersebut dibuat dan diperbarui oleh perintah updatedb yang lazim dijalankan otomatis sesuai jadwal sistem. Konsekuensinya, kesegaran hasil locate mengikuti umur indeksnya, dan berkas yang baru dibuat belum tentu tercatat di dalamnya. Bentuk pemanggilannya sederhana, tetapi pada lingkungan uji topik ini locate tidak terpasang, sehingga barisnya hanya menunjukkan pemanggilannya.
# tidak-dijalankan
# locate membaca basis data indeks yang diperbarui oleh updatedb
locate laporan-2025.txtKedua perintah itu saling melengkapi, bukan saling menggantikan. locate unggul untuk pencarian cepat atas nama berkas yang sudah lama ada, sedangkan find unggul karena selalu mutlak terhadap keadaan sistem berkas, tidak memerlukan indeks, dan menyaring menurut tipe serta ukuran. Letak berkas basis datanya bergantung pada varian locate yang terpasang, sehingga yang perlu diingat adalah mekanismenya, yaitu indeks yang diisi oleh updatedb dan dibaca oleh locate.
Kesalahan umum#
Kesalahan pertama adalah menulis path awal yang salah, dan pesan errornya menunjukkan nama path yang tidak ditemukan.
# menelusuri path yang tidak ada
find arsip-tidak-adafind: ‘arsip-tidak-ada’: No such file or directoryPesan tersebut berarti path awalnya tidak ada, sehingga pencarian tidak pernah dimulai dan cukup diperbaiki dengan menelusuri ke atas menggunakan .. atau dengan memeriksa posisi melalui pwd. Kesalahan kedua adalah menggunakan pola -name tanpa tanda kutip, yang terlihat berjalan baik saat pola tidak cocok dengan berkas apa pun di direktori kerja, tetapi melenceng begitu ada berkas yang cocok. Kesalahan ketiga adalah lupa menyebut -type, sehingga direktori ikut muncul di antara hasil dan daftar yang didapat terasa bercampur. Ketiganya tertangani oleh kebiasaan yang sama, yaitu menyebut path awal secara eksplisit, mengapit pola dengan tanda kutip tunggal, dan memeriksa ulang daftar penyaring sebelum membaca hasil. Bila hasil terasa kurang dari harapan, jalankan find tanpa penyaring pada path yang sama, lalu bandingkan daftar lengkapnya dengan daftar tersaring untuk melihat syarat mana yang terlalu ketat.
Ringkasan#
- find menelusuri seluruh cabang di bawah sebuah path awal dan mencetak setiap entri sebagai path relatif terhadap path awal tersebut.
- Opsi
-namemenyaring menurut pola nama yang diapit tanda kutip tunggal, opsi-typemenyaring antara berkasfdan direktorid, dan opsi-sizemenyaring menurut ukuran dengan satuan seperticdank. - Penyaring yang disebut lebih dari satu berlaku serentak, sehingga pencarian menjadi makin sempit setiap kali opsi ditambahkan.
- locate mencari melalui basis data indeks dari updatedb sehingga cepat tetapi bisa kedaluwarsa, sedangkan find selalu mutlak terhadap keadaan sistem berkas.
Referensi#
- GNU Findutils Manual — Free Software Foundation — dokumentasi resmi find dan locate beserta seluruh opsi penyaringannya.
- The Linux Command Line — William Shotts — bab pencarian berkas yang membahas find, locate, dan updatedb secara bertahap.