Cara grep Mencari Nama File Alih-alih Konten di Linux
grep adalah alat Linux yang biasanya digunakan untuk menelusuri file teks untuk konten tertentu. Namun, sering kali berguna untuk menelusuri direktori untuk nama file alih-alih konten file, dan ini dapat dilakukan dengan grep dan utilitas baris perintah Linux lainnya
Menggunakan find Alih-alih grep
Utilitas grep pada dasarnya mengambil input string dari file atau input standar dan menggunakan pola atau Regex untuk telusuri dan cetak baris yang cocok.
Anda secara teknis dapat menggunakan grep sendiri untuk menelusuri nama file alih-alih konten, tetapi itu hanya karena Linux mengizinkan karakter pengganti dalam input nama file. Namun, Anda dapat dengan mudah menggunakan ls untuk membuat daftar file dengan cara ini, atau menggunakan karakter pengganti di perintah lain, dan ini bukanlah solusi nyata untuk mencari nama file seperti cara grep menelusuri content.
grep "" ./file* -l
The real solusinya adalah dengan menggunakan utilitas find, yang dapat menelusuri sub-direktori dan menyediakan cara paling tangguh untuk menelusuri file saat berinteraksi langsung dengan sistem file. Ini adalah utilitas yang paling umum digunakan untuk menelusuri direktori, dan memiliki banyak opsi—termasuk pencocokan pola dan dukungan Regex.
Penggunaan paling dasar adalah menggunakan find sendiri untuk mencetak daftar file, termasuk subdirektori, dan berikan masukan itu ke grep. Jika Anda sudah memiliki skrip yang menggunakan grep, akan sangat mudah untuk mengonversinya agar cocok dengan cara ini.
find | grep "file"
Anda juga dapat menggunakan pola secara langsung dengan find, menghilangkan kebutuhan grep. Gunakan -iname dengan input.
find . -iname `file_*.txt`
Tidak seperti grep, perintah find sedikit lebih ketat—Anda perlu menggunakan tanda kutip tunggal atau ganda untuk keluar dari string pencarian, dan Anda perlu menggunakan karakter pengganti untuk mencocokkan seluruh string. Cukup menemukan substring dalam nama tidak mungkin tanpa menggunakan wildcard untuk mencocokkan sisa nama.
Menggunakan Ekspresi Reguler (Regex) Dengan find
Anda juga dapat menggunakan ekspresi reguler dengan find, yang memungkinkan pencocokan lebih lanjut:
find . -regex `./file.*`
Regex ini akan cocok dengan semua file di direktori saat ini yang dimulai dengan "file". Namun, penting untuk diketahui bahwa ini bekerja secara berbeda dari -iname; masukan menyertakan jalur direktori lengkap, dan harus menggunakan ./ untuk keluar dari jalur relatif, ./.
Perintah yang ditampilkan di sini tidak termasuk folder ./subdirektori/ , karena tidak dimulai dengan “file”. Untuk memperbaikinya, Anda harus mencocokkan semua yang mengarah ke garis miring terakhir dengan .*/:
find . -regex `.*/file.*`
Ekspresi reguler sangat rumit, tetapi sangat kuat. Jika Anda ingin mempelajari lebih lanjut, Anda dapat membaca panduan kami tentang cara kerjanya.
TERKAIT:Bagaimana Sebenarnya Anda Menggunakan Regex?
Itulah berita seputar Cara grep Mencari Nama File Alih-alih Konten di Linux, semoga bermanfaat. Disadur dari HowToGeek.com.