Segala sesuatu di Linux disimpan dalam direktori, dan ketika menulis skrip bash, sering kali berguna untuk mencari direktori berdasarkan nama. Untungnya, Anda dapat menggunakan perintah find untuk menelusuri nama direktori secara rekursif dan menampilkan kecocokan.
Searching Directories
Perintah find digunakan untuk menelusuri direktori di Linux. Secara default, ini sepenuhnya rekursif, sehingga akan menelusuri semua sub-direktori untuk menemukan kecocokan.
Jika Anda menggunakan tanda -type d, find akan beroperasi dalam "mode direktori", dan hanya mencari direktori, tidak cocok dengan file apa pun. Anda dapat menggunakannya bersama -name untuk menelusuri direktori berdasarkan name:
find . -type d -name "search"
Perintah ini dimulai di direktori saat ini tetapi juga dapat mencari di direktori lain seperti ~.
Masalah dengan menggunakan -name adalah hanya akan cocok dengan nama langsung, artinya akan gagal kecuali jika cocok dengan seluruh nama direktori . Anda dapat menggunakan wildcard untuk menyelesaikan ini, dan meletakkan wildcard sebelum dan sesudah string pencarian akan cocok dengan substring di mana saja dalam nama direktori. Jika Anda juga menyertakan nama file, Anda dapat menggunakan wildcard untuk mencocokkan file yang diakhiri dengan ekstensi tertentu
find . -type d -name "*search*"
Namun, ini hanya akan cocok dengan nama direktori, dan tetap mengabaikan direktori induk. Jika Anda ingin mencocokkan menggunakan seluruh jalur file, Anda harus menggunakan opsi Regex yang tercakup di bawah ini.
find akan mencetak daftar setiap direktori yang cocok, tetapi Anda harus berhati-hati untuk memastikan bahwa Anda konsisten dalam menggunakan jalur baik absolut maupun relatif, karena akan mempengaruhi respon akhir. Jika Anda menggunakan jalur relatif, seperti titik untuk "direktori saat ini", responsnya akan relatif. Namun jika Anda menentukan jalur secara langsung, meskipun itu adalah direktori saat ini, jalur akan menjadi absolut, dimulai dari root.
find juga melakukan lebih dari sekadar penelusuran teks—ini dapat digunakan untuk mencocokkan file berdasarkan stempel waktu, ukuran file, dan lainnya pengenal Linux. Itu juga dapat digunakan dengan -exec untuk menjalankan perintah pada setiap file atau direktori.
Menelusuri Dengan Regex
Anda juga dapat menggunakan pemfilteran lebih lanjut dengan find, menggunakannya dengan ekspresi reguler (Regex) untuk menemukan kecocokan untuk kueri penelusuran yang kompleks.
Salah satu manfaat utama menggunakan Regex adalah akan cocok dengan seluruh direktori, termasuk direktori dasar yang mengarah ke.
Anda dapat menggunakan Regex dengan -regex sebagai ganti -name. Ini juga membantu untuk mengaktifkan Regex yang kompatibel dengan sed menggunakan -regextype sed.
find . -type d -regextype sed -regex “.*one/.*”
Dalam contoh ini, regex dimulai dengan .*one untuk mencocokkan semua direktori yang diakhiri dengan “one”. Titik dan wildcard akan cocok dengan substring apa pun yang mengarah ke ini. Kemudian garis miring di-escape dengan / untuk mencocokkan akhir direktori, dan kemudian karakter pengganti lain untuk mencocokkan nama direktori apa pun.
Secara keseluruhan, ini akan cocok dengan direktori mana pun yang induknya diakhiri dengan "satu", di mana pun itu berada, bahkan di subdirektori. Regex sangat kuat, dan Anda harus berhati-hati bahwa milik Anda sama persis dengan apa yang Anda inginkan—tidak lebih, tidak kurang.
Menggunakan grep Dengan find
Karena find juga dapat menampilkan daftar direktori mentah, ia dapat disalurkan ke perintah lain untuk diproses. Misalnya, grep digunakan sebagai utilitas penelusuran teks, dan cepat digunakan pada baris perintah untuk penelusuran dan penyorotan sederhana.
find . -tipe d | grep foo
grep juga merupakan utilitas penelusuran yang lengkap dan dapat digunakan dengan alat seperti ekspresi reguler untuk menyempurnakan penelusuran. Anda dapat membaca panduan kami untuk menggunakannya untuk mempelajari lebih lanjut.
Itulah berita seputar
Cara Mencari Nama Direktori Secara Rekursif di Linux, semoga bermanfaat.
Disadur dari HowToGeek.com.