Find adalah utilitas baris perintah yang memungkinkan Anda untuk mencari file dan direktori dalam hirarki direktori, berdasarkan pada ekspresi yang diberikan pengguna dan menerapkan tindakan yang ditentukan pengguna pada setiap file yang cocok.
Perintah Find adalah salah satu senjata paling ampuh bagi seorang sistem administrator Linux.
Anda dapat menggunakan perintah find
untuk mencari file berdasarkan izin file, jenis, tanggal, kepemilikan, ukuran, dan lainnya. Perintah find juga dapat digunakan dengan kombinasi dengan alat-alat lain seperti grep
atau sed
untuk melakukan operasi tertentu.
Diharapkan Anda membuka konsol terminal distribusi Linux untuk mengikuti panduan di halaman ini agar Anda lebih memahami cara kerja perintah ln di Linux terminal.
Kami juga sarankan Anda untuk menguji setiap tutorial atau panduan apapun yang ada di Internet di virtual machine (vmware atau virtualbox) sebelum menerapkan ke server produksi, agar tidak mengacaukan sistem yang aktif berjalan ketika ada kesalahan.
Anda bisa melihat cara installasi VMware di Ubuntu dan CentOS, dan VirtualBox di Ubuntu, Fedora, dan CentOS
Syntax Perintah Find di Linux
Sebelum membahas cara menggunakan perintah find, mari kita mulai dengan meninjau sintaks dasar.
Ekspresi utilitas find mengambil bentuk berikut:
find [options] [path...] [expression]
- Atribut
option
mengontrol perlakuan symbolic links, opsi debugging, dan metode optimisasi. - Atribut
path ...
mendefinisikan direktori awal atau direktori tempat find akan mencari file. - Atribut
expression
terdiri dari opsi, pola pencarian, dan tindakan yang dipisahkan oleh operator.
Mari kita lihat contoh berikut:
find -L /home/website/ -name "*.php" -exec chmod 644 {} \;
Perintah di atas memasukkan parameter -L
(atribut options
) yang memungkinkan perintah find untuk mengikuti symbolic links, dan mencari seluruh pohon direktori di bawah /home/projects/
(atribut path ...
) untuk semua file yang diakhiri dengan .js
(atribut expression
) dan mengatur izin dari semua file yang cocok ke 644.
Temukan File berdasarkan Jenis
Untuk menentukan jenis file yang ingin Anda temukan gunakan parameter -type
.
Anda dapat menggunakan deskriptor berikut untuk menentukan jenis file:
f
: file regulerd
: direktoril
: symbolic linkc
: character devicesb
: block devicesp
: named pipe (FIFO)s
: socket
Misalnya, jika Anda ingin menemukan semua direktori di direktori kerja saat ini Anda dapat menggunakan perintah:
find . -type d
Jika ingin melihat daftar semua character device di sistem, gunakan perintah.
find / -type c
Untuk mengubah semua izin file ke 644 dan semua izin direktori ke 755 secara rekursif jalankan perintah berikut:
find /var/www/proyek -type d -exec chmod 0755 {} \; find /var/www/proyek -type f -exec chmod 0644 {} \;
Menemukan File dengan Nama File
Mencari file dengan nama mungkin adalah penggunaan yang paling umum untuk perintah find. Untuk menemukan file dengan namanya, gunakan opsi -name
bersama dengan nama file yang ingin Anda cari.
Misal untuk mencari file bernama laporan.pdf
di direktori /home/adhit,
maka gunakan perintah berikut:
sudo find /home/adhit -type f -name laporan.pdf
Jika Anda ingin menjalankan pencarian case-insensitive maka ubah opsi -name
dengan -iname
:
sudo find /home/adhit -type f -iname laporan.pdf
Pencarian case-insensitive akan mencocokkan semua file karakter, tidak pedulu besar atau kecil, baik file tersebut bernama laporan.pdf, Laporan.pdf, LapOraN.pdf, LAPORAN.pdf dan seterusnya :
Temukan File dengan Ekstensi
Mencari file dengan ekstensi sama dengan mencari file dengan nama. Misalnya, jika Anda ingin menemukan semua file yang diakhiri dengan .log.gz
di dalam direktori /var/log/nginx,
Anda dapat menggunakan:
find /var/log/nginx -type f -name '*.log.gz'
Penting untuk menyebutkan bahwa ketika Anda menggunakan karakter wildcard Anda harus mengutip polanya atau melarikan diri dari simbol asterisk *
dengan backslash \
sehingga tidak bisa ditafsirkan oleh shell.
Jika Anda ingin menemukan semua file yang tidak cocok dengan regex *.log.gz
Anda dapat menggunakan parameter -not
. Misalnya, untuk menemukan semua file yang tidak diakhiri dengan *.log.gz
Anda akan menggunakan:
find /var/log/nginx -type f -not -name '*.log.gz'
Temukan File berdasarkan Ukuran
Untuk menemukan file berdasarkan ukuran file, berikan parameter -size
bersama dengan kriteria ukuran. Anda dapat menggunakan sufiks berikut untuk menentukan ukuran file:
b
: 512-byte blocks (default)c
: bytesw
: two-byte wordsk
: KilobytesM
: MegabytesG
: Gigabytes
Sebagai contoh, untuk menemukan semua file dengan ukuran tepat 1024 byte di dalam direktori /tmp
, Anda dapat menjalankan perintah berikut:
find /tmp -type f -size 1024c
Perintah find juga memungkinkan Anda untuk mencari file yang besar atau kurang dari ukuran yang ditentukan.
Dalam contoh berikut ini kami sedang mencari semua file kurang dari 1MB di dalam direktori kerja saat ini, perhatikan simbol minus -
sebelum nilai ukuran:
find . -type f -size -1M
Jika Anda ingin mencari file dengan ukuran lebih besar dari 5 Gigabyte, maka Anda perlu menggunakan simbol plus +
:
find . -type f -size +5G
Anda bahkan dapat mencari file dalam rentang ukuran. Misalnya, perintah berikut akan menemukan semua file antara 1 dan 2 MB:
find . -type f -size +1M -size 21M
Temukan File berdasarkan Tanggal Modifikasi
Perintah find juga dapat mencari file berdasarkan modifikasi terakhir, akses atau perubahan waktu.
Sama seperti saat mencari berdasarkan ukuran, Anda dapat menggunakan simbol plus dan minus untuk menentukan lebih dari atau kurang dari.
Katakanlah beberapa hari yang lalu, Anda memodifikasi file konfigurasi dovecot
tetapi Anda lupa nama filenya. Anda dapat dengan mudah memfilter semua file di direktori /etc/dovecot/conf.d/
yang diakhiri dengan .conf
dan telah dimodifikasi dalam 5 hari terakhir. Untuk mencari file tersebut, gunakan perintah berikut :
find /etc/dovecot/conf.d -name "*.conf" -mtime 5
Berikut adalah contoh lain dari memfilter file berdasarkan tanggal modifikasi menggunakan opsi -daystart
.
Perintah di bawah ini akan mencantumkan semua file di direktori /home
yang telah dimodifikasi 30 hari yang lalu atau lebih :
find /home -mtime +30 -daystart
.
Temukan File Berdasar Izin File
Untuk memfilter file berdasarkan izin file, gunakan opsi -perm
.
Misalnya, untuk menemukan semua file dengan izin persis 775 di dalam direktori /var/www/wordpress
Anda dapat menggunakan perintah :
find /var/www/wordpress -perm 644
Anda dapat mengawali mode numerik dengan minus -
atau slash /
.
Ketika slash /
digunakan sebagai awalan, maka setidaknya satu kategori (pengguna, grup atau yang lain) harus memiliki setidaknya masing-masing bit yang ditetapkan untuk file yang cocok.
lihat contoh perintah berikut:
find . -perm /444
Perintah di atas akan mencocokkan semua file dengan izin read (baca) yang ditetapkan untuk pengguna, grup, atau orang lain.
Jika minus -
digunakan sebagai awalan maka untuk file agar cocok setidaknya bit yang ditentukan harus ditetapkan.
Perintah berikut akan mencari file yang memiliki izin read (baca) dan write (tulis) untuk pemilik dan grup dan dapat dibaca oleh pengguna lain:
find . -perm -664
Temukan File berdasarkan Pemilik
Untuk menemukan file yang dimiliki oleh pengguna atau grup tertentu, Anda dapat menggunakan opsi -user
dan -group
.
Misalnya, untuk mencari semua file dan direktori yang dimiliki oleh nama pengguna linux
, Anda dapat menjalankan perintah :
find / -user linux
Berikut ini contoh yang lebih canggih, katakanlah Anda ingin menemukan semua file yang dimiliki oleh pengguna www-data
dan mengubah kepemilikan file yang cocok dari www-data
ke nginx
:
find / -user www-data -type f -exec chown nginx {} \;
Temukan dan Hapus File
Untuk menghapus semua file yang cocok tambahkan parameter -delete ke akhir ekspresi pertandingan.
Pastikan Anda menggunakan opsi ini hanya ketika Anda yakin bahwa hasilnya cocok dengan file yang ingin Anda hapus. Selalu merupakan ide yang baik untuk mencetak file yang cocok sebelum menggunakan opsi -delete
.
Misalnya untuk menghapus semua file yang diakhiri dengan .temp
dari /var/log/
Anda akan menggunakan:
find /var/log/ -name `*.temp` -delete
Gunakan opsi -delete
dengan sangat hati-hati. Baris perintah find akan di lihat sebagai ekspresi dan jika Anda menambahkan opsi -delete
terlebih dahulu, perintah akan menghapus semuanya di bawah titik awal yang Anda tentukan.
Kesimpulan
Dalam tutorial ini, Anda telah belajar cara menggunakan utilitas menemukan Linux berdasarkan berbagai kriteria dan sekarang Anda harus memiliki pemahaman mendasar tentang cara mencari file di sistem Linux Anda.
Anda juga dapat mengunjungi halaman manual resmi find dan membaca tentang semua opsi powerful lainnya dari perintah Find.