find
command adalah salah satu alat paling kuat di gudang administrator sistem Linux. Ini mencari file dan direktori dalam hierarki direktori berdasarkan ekspresi yang diberikan pengguna dan dapat melakukan tindakan yang ditentukan pengguna pada setiap file yang cocok.
Anda dapat menggunakan find
perintah untuk mencari file dan direktori berdasarkan izin, jenis, tanggal, kepemilikan, ukuran, dan lainnya. Itu juga dapat dikombinasikan dengan alat lain seperti grep
atau sed
.
find
Sintaks Perintah #
Sintaks umum untuk find
perintahnya adalah sebagai berikut:
find [options] [path...] [expression]
options
atribut mengontrol perlakuan tautan simbolik, opsi debug, dan metode pengoptimalan.- Jalur
path...
atribut mendefinisikan direktori awal atau direktori tempat find akan mencari file. expression
atribut terdiri dari opsi, pola penelusuran, dan tindakan yang dipisahkan oleh operator.
Untuk mencari file dalam direktori, pengguna menjalankan find
perintah harus memiliki izin baca pada direktori tersebut.
Mari kita lihat contoh berikut:
find -L /var/www -name "*.js"
- Opsi
-L
(opsi) memberitahufind
perintah untuk mengikuti tautan simbolis. /var/www
(path…) menentukan direktori yang akan dicari.- (ekspresi)
-name "*.js
memberitahufind
untuk mencari file yang diakhiri dengan.js
(File JavaScript).
Temukan File berdasarkan Nama #
Menemukan file berdasarkan nama mungkin adalah penggunaan paling umum dari find
memerintah. Untuk menemukan file berdasarkan namanya, gunakan -name
pilihan diikuti dengan nama file yang Anda cari.
Misalnya, untuk mencari file bernama document.pdf
di /home/linuxize
direktori, Anda akan menggunakan perintah berikut:
find /home/linuxize -type f -name document.pdf
Untuk menjalankan pencarian peka huruf besar/kecil, ubah -name
opsi dengan -iname
:
find /home/linuxize -type f -iname document.pdf
Perintah di atas akan cocok dengan “Document.pdf”, “DOCUMENT.pdf” ..etc.
Temukan File menurut Ekstensi #
Mencari file dengan ekstensi sama dengan mencari file berdasarkan nama. Misalnya, untuk menemukan semua file yang diakhiri dengan .log.gz
di dalam /var/log/nginx
direktori, Anda akan mengetik:
find /var/log/nginx -type f -name '*.log.gz'
Penting untuk disebutkan bahwa Anda harus mengutip pola atau menghindari tanda bintang *
simbol dengan garis miring terbalik \
agar tidak ditafsirkan oleh shell saat Anda menggunakan karakter wildcard.
Untuk menemukan semua file yang tidak cocok dengan regex *.log.gz
Anda dapat menggunakan -not
pilihan. 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 menurut Jenis #
Terkadang Anda mungkin perlu mencari jenis file tertentu seperti file biasa, direktori, atau symlink. Di Linux, semuanya adalah file.
Untuk mencari file berdasarkan jenisnya, gunakan -type
opsi dan salah satu deskriptor berikut untuk menentukan jenis file:
f
:file biasad
:direktoril
:tautan simbolisc
:perangkat karakterb
:memblokir perangkatp
:pipa bernama (FIFO)s
:soket
Misalnya, untuk menemukan semua direktori di direktori kerja saat ini, Anda akan menggunakan:
find . -type d
Contoh umum adalah mengubah izin file situs web secara rekursif menjadi 644
dan izin direktori ke 755
menggunakan chmod
perintah:
find /var/www/my_website -type d -exec chmod 0755 {} \;
find /var/www/my_website -type f -exec chmod 0644 {} \;
Temukan File menurut Ukuran #
Untuk menemukan file berdasarkan ukuran file, berikan -size
parameter bersama dengan kriteria ukuran. Anda dapat menggunakan sufiks berikut untuk menentukan ukuran file:
b
:blok 512-byte (default)c
:bytew
:kata dua bytek
:KilobyteM
:MegabyteG
:Gigabyte
Perintah berikut akan menemukan semua file dengan tepat 1024
byte di dalam /tmp
direktori:
find /tmp -type f -size 1024c
find
perintah juga memungkinkan Anda untuk mencari file yang lebih besar atau lebih kecil dari ukuran yang ditentukan.
Dalam contoh berikut, kami mencari semua file kurang dari 1MB
di dalam direktori kerja saat ini. Perhatikan minus -
simbol sebelum nilai ukuran:
find . -type f -size -1M
Jika Anda ingin mencari file dengan ukuran lebih besar dari 1MB
, maka Anda perlu menggunakan tanda tambah +
simbol:
find . -type f -size +1M
Anda bahkan dapat mencari file dalam rentang ukuran. Perintah berikut akan menemukan semua file antara 1
dan 2MB
:
find . -type f -size +1M -size 21M
Temukan File menurut Tanggal Modifikasi #
find
perintah juga dapat mencari file berdasarkan modifikasi terakhir, akses, atau perubahan waktu.
Sama seperti saat menelusuri menurut ukuran, gunakan simbol plus dan minus untuk “lebih besar dari” atau “kurang dari”.
Katakanlah beberapa hari yang lalu, Anda memodifikasi salah satu file konfigurasi dovecot, tetapi Anda lupa yang mana. Anda dapat dengan mudah memfilter semua file di bawah /etc/dovecot/conf.d
direktori yang diakhiri dengan .conf
dan telah diubah dalam lima hari terakhir:
find /etc/dovecot/conf.d -name "*.conf" -mtime 5
Berikut adalah contoh lain dari memfilter file berdasarkan tanggal modifikasi menggunakan -daystart
pilihan. Perintah di bawah ini akan menampilkan semua file di /home
direktori yang dimodifikasi 30
atau beberapa hari yang lalu:
find /home -mtime +30 -daystart
Temukan File dengan Izin #
-perm
opsi memungkinkan Anda untuk mencari file berdasarkan izin file.
Misalnya, untuk menemukan semua file dengan izin persis 775
di dalam /var/www/html
direktori, Anda akan menggunakan:
find /var/www/html -perm 644
Anda dapat mengawali mode numerik dengan minus -
atau garis miring /
.
Saat memangkas /
digunakan sebagai awalan, maka setidaknya satu kategori (pengguna, grup, atau lainnya) harus memiliki setidaknya bit masing-masing yang disetel agar file cocok.
Perhatikan contoh perintah berikut:
find . -perm /444
Perintah di atas akan mencocokkan semua file dengan izin baca yang ditetapkan untuk pengguna, grup, atau lainnya.
Jika minus -
digunakan sebagai awalan, maka agar file cocok, setidaknya bit yang ditentukan harus ditetapkan. Perintah berikut akan mencari file yang memiliki izin baca dan tulis untuk pemilik dan grup dan dapat dibaca oleh pengguna lain:
find . -perm -664
Temukan File menurut Pemilik #
Untuk menemukan file yang dimiliki oleh pengguna atau grup tertentu, gunakan -user
dan -group
pilihan.
Misalnya, untuk mencari semua file dan direktori milik pengguna linuxize
, Anda akan menjalankan:
find / -user linuxize
Berikut adalah contoh dunia nyata. Katakanlah Anda ingin mencari semua file milik pengguna www-data
dan ubah kepemilikan file yang cocok dari www-data
ke nginx
:
find / -user www-data -type f -exec chown nginx {} \;
Cari dan Hapus File #
Untuk menghapus semua file yang cocok, tambahkan -delete
opsi ke akhir ekspresi kecocokan.
Pastikan Anda menggunakan opsi ini hanya jika Anda yakin bahwa hasilnya cocok dengan file yang ingin Anda hapus. Itu selalu merupakan ide yang baik untuk mencetak file yang cocok sebelum menggunakan -delete
pilihan.
Misalnya, untuk menghapus semua file yang diakhiri dengan .temp
dari /var/log/
, Anda akan menggunakan:
find /var/log/ -name `*.temp` -delete
Gunakan -delete
pilihan dengan sangat hati-hati. find
perintah dievaluasi sebagai ekspresi dan jika Anda menambahkan -delete
opsi pertama, perintah akan menghapus semua yang ada di bawah titik awal yang Anda tentukan.
Ketika datang ke direktori, find
hanya dapat menghapus direktori kosong, sama seperti rmdir
.
Kesimpulan #
Kami telah menunjukkan cara menggunakan find
perintah dengan berbagai opsi dan kriteria.
Artikel ini akan memberi Anda pemahaman mendasar tentang cara menemukan file di sistem Linux Anda. Anda juga dapat mengunjungi find
halaman manualdan baca tentang semua opsi hebat lainnya dari find
perintah.
Jika Anda memiliki pertanyaan atau komentar, silakan tinggalkan komentar di bawah.