Perintah Find di Linux/Unix dengan Contoh
Perintah find membantu kita menemukan file tertentu dalam direktori. Perintah ini digunakan untuk menemukan daftar file berdasarkan berbagai kondisi seperti izin, kepemilikan pengguna, tanggal/waktu modifikasi, ukuran, dan lainnya.
Dalam sistem operasi seperti Unix dan lainnya, perintah find adalah utilitas baris perintah yang menemukan file berdasarkan beberapa format yang ditentukan pengguna dan mencetak semua path objek yang cocok atau, jika tindakan lain diminta, menerapkan tindakan tersebut pada semua objek yang cocok.
Perintah ini memulai pencarian dari lokasi yang diinginkan dan setelah itu, menelusuri direktori (nodes) secara rekursif dari struktur hierarkis (biasanya pohon). Perintah find dapat mencari dan menelusuri dari berbagai sistem partisi file yang berasal dari satu atau lebih perangkat penyimpanan di bawah direktori awal.
Format pencarian berisi pola untuk mencocokkan dengan nama file atau rentang waktu untuk mencocokkan dengan waktu modifikasi atau waktu akses file. Perintah find secara default menyediakan daftar setiap file di bawah direktori kerja saat ini. Namun, pengguna dapat membatasi pencarian ke tingkat maksimum yang diinginkan pada direktori awal.
Program terkait locate menggunakan database file yang diindeks yang diperoleh dari perintah find untuk memberikan teknik yang lebih cepat dalam mencari seluruh sistem file berdasarkan nama.
Utilitas find datang secara default dengan sebagian besar distro Linux, jadi kita tidak perlu menginstal paket tambahan. Ini adalah salah satu perintah yang paling penting dan sering digunakan dalam sistem Linux.
Sintaks
phpSalin kodefind <lokasi> <kriteria-perbandingan> <istilah-pencarian>
Dua opsi menentukan bagaimana find harus mempertimbangkan symbolic links. Secara default, perintah ini tidak akan mengikuti symbolic links. Flag -L akan membuat find mengikuti symbolic links. Flag -H hanya akan mengikuti symbolic links saat melanjutkan dengan argumen baris perintah. Flag ini disebutkan dalam standar POSIX untuk perintah find. Ekstensi dasar adalah flag -P untuk secara eksplisit menonaktifkan pengejaran symbolic link.
Setidaknya satu jalur harus mengantisipasi ekspresi. Perintah find dapat secara internal menafsirkan wildcard, dan perintah harus dikutip dengan hati-hati untuk mengelola globbing shell.
Komponen ekspresi dipisahkan oleh batas argumen baris perintah, biasanya ditunjukkan sebagai spasi dalam sintaks shell. Mereka dianggap dari sisi kiri ke sisi kanan. Mereka dapat mencakup komponen logis seperti OR dan AND serta predikat (tindakan dan filter). GNU find berisi beberapa fitur lain yang tidak disebutkan oleh POSIX.
Simbol berikut digunakan untuk menentukan direktori:
- (.) : Untuk nama direktori saat ini
- (/) : Untuk direktori root
Sejarah Singkat Perintah Find
Perintah find muncul di Version 5 Unix sebagai elemen dari proyek Programmer’s Workbench dan ditentukan oleh Dick Haight dengan cpio, yang dikembangkan untuk digunakan bersama-sama.
Awalnya, implementasi GNU dari perintah find ditentukan oleh Eric Decker. Kemudian, dikembangkan oleh David MacKenzie, Tim Wood, dan Jay Plett. Juga, perintah find telah dipindahkan ke IBM i OS.
Predikat
Primaries yang sering digunakan adalah:
-name pattern
: Memeriksa apakah nama file sama dengan pola shell-glob yang diberikan atau tidak.-type type
: Memeriksa apakah file adalah tipe yang disediakan.-print
: Selalu memberikan nilai benar. Mencetak nama file saat ini dan newline ke stdout.-print0
: Selalu memberikan nilai benar. Mencetak nama file saat ini dan karakter null ke stdout. Tidak diperlukan oleh POSIX.-exec program [argument ...];
: Selalu memberikan nilai benar. Menjalankan program dengan argumen yang tetap diberikan dan jalur file saat ini.-exec program [argument ...] { } +
: Selalu memberikan nilai benar. Menjalankan program dengan argumen yang tetap diberikan dan sebanyak mungkin jalur. Untuk hampir setiap implementasi, {} lain berarti salinan tambahan dari nama yang diberikan (aspek tidak diperlukan oleh POSIX).-ok program [argument ...];
: Sama dengan -exec, tetapi akan mengembalikan false atau true jika program memberikan 0.
Find default untuk mengimplementasikan -print jika kondisi benar jika ekspresi tidak menggunakan salah satu dari -ok, -exec, -print, atau -print0.
Operator
Operator meningkatkan ekspresi perintah find. Mereka disebutkan dalam urutan prioritas menurun:
( expr )
: Operator ini dapat memaksa prioritas.! expr
: Jika expr mengembalikan false, ini mengembalikan true.expr1 expr2
atauexpr1 -a expr2
: AND. expr2 tidak dievaluasi jika expr1 false.expr1 -o expr2
: OR. expr2 tidak dievaluasi jika expr1 true.
Contoh Perintah Find
Mari kita lihat contoh-contoh berikut dari perintah find:
Menemukan File Berdasarkan Nama
Kita dapat mencari semua file yang diakhiri dengan ekstensi ‘.txt’. Untuk melakukannya, jalankan perintah berikut:
arduinoSalin kodefind . -name "*.txt"
Perintah di atas akan menampilkan semua file teks dari direktori kerja saat ini.
Menemukan File Berdasarkan Tipe
Parameter ‘-type’ digunakan untuk menentukan tipe file.
Beberapa tipe file adalah sebagai berikut:
f
: file regulerd
: direktoril
: symbolic linksc
: perangkat karakterb
: perangkat blok
Pertimbangkan perintah berikut:
luaSalin kodefind . -type d -name "*.bak"
Perintah di atas akan menampilkan semua direktori yang memiliki ekstensi ‘.bak’.
Menemukan File Baru
Parameter ‘-newer’ membantu dalam mencari file yang lebih baru daripada file yang disebutkan. Pertimbangkan perintah berikut:
arduinoSalin kodefind . -newer msg.txt
Perintah di atas akan menampilkan semua file yang lebih baru dari ‘msg.txt’ dari direktori kerja saat ini.
Menemukan dan Menghapus File
Opsi ‘-delete’ digunakan untuk menghapus file tertentu. Kita perlu sangat berhati-hati saat menggunakan perintah ini karena tidak ada opsi undo jika sudah dijalankan. Pertimbangkan perintah berikut:
arduinoSalin kodefind . -name Demo.txt -delete
Perintah di atas akan menghapus file ‘Demo.txt’ dari direktori kerja saat ini.
Menemukan Direktori
Opsi ‘type -d’ digunakan untuk menemukan direktori. Pertimbangkan perintah berikut:
luaSalin kodefind . type -depth -name Newdirectory
Perintah di atas akan menemukan lokasi ‘Newdirectory’.
Menemukan File Berdasarkan Waktu Modifikasi
Opsi ‘-mtime’, diikuti dengan jumlah hari, digunakan untuk menemukan file berdasarkan modifikasi. Jumlah hari bisa positif atau negatif. Nilai negatif akan digunakan untuk kurang dari seperti -1 digunakan untuk hari terakhir, dan demikian juga, +1 akan menemukan file untuk lebih dari satu hari yang lalu. Pertimbangkan perintah berikut:
arduinoSalin kodefind ./Newdirectory -mtime -1
Perintah di atas akan menemukan file yang dimodifikasi dalam satu hari terakhir.
Menemukan File Berdasarkan Izin
Opsi ‘-perm’ digunakan untuk menemukan file berdasarkan izin. Jalankan perintah find dengan opsi ‘-perm’ dan berikan nilai yang diperlukan. Pertimbangkan perintah berikut:
arduinoSalin kodefind ./<nama direktori> -perm 777
Perintah di atas akan menampilkan file dari direktori yang ditentukan yang dapat dibaca, ditulis, dan dieksekusi oleh semua orang.
Menemukan dan Mengganti File
Untuk menemukan dan mengganti file, kita harus menggabungkan perintah find dengan perintah sed. Untuk mengoperasikan file, gunakan opsi ‘-exec’ dengan perintah find. Pertimbangkan perintah berikut:
bashSalin kodefind ./Newdirectory -type f -exec sed -i 's/find/replace/g' {} \;
Dari perintah di atas, kejadian yang ditentukan akan diganti.
Menemukan Teks dalam Beberapa File
Kita dapat membuat kombinasi lain dari perintah find dengan perintah grep untuk menemukan teks dari berbagai file. Pertimbangkan perintah berikut:
bashSalin kodefind ./Newdirectory -type f -name "*.txt" -exec grep 'demo' {} \;
Perintah di atas akan menemukan baris yang mengandung teks ‘demo’ dari semua file teks dalam direktori ‘Newdirectory’.
Mencari Setiap Direktori
luaSalin kode$ find / -name file1 -type f -print
Perintah di atas menemukan semua direktori untuk file reguler yang berjudul file1 dan mencetaknya di layar. Biasanya, tidak disarankan untuk mencari file dengan cara ini karena bisa memakan waktu yang cukup lama. Jadi, yang terbaik adalah menyebutkan direktori. Beberapa sistem operasi mungkin memasang sistem file (dinamis) yang tidak menguntungkan untuk perintah find. Nama file yang lebih rumit yang mengandung karakter unik untuk shell mungkin perlu ditutup dalam tanda kutip tunggal.
ref:[1]