GNU/Linux >> Belajar Linux >  >> Linux

Bagaimana Cara Mencari Di File Tertentu yang Sesuai Dengan Pola?

Bagaimana saya bisa menemukan kata dalam file tertentu yang cocok dengan suatu pola. misalnya mencari version di CMake* file yang ditemukan secara rekursif di direktori saat ini.

Jawaban yang Diterima:

Jika Anda ingin melihat nama file dan nomor baris, POSIXly:

find . -name 'CMake*' -type f -exec grep -nF /dev/null version {} +

(Anda tidak ingin menggunakan ; di sini yang akan menjalankan satu grep per berkas). Itu standar yang setara dengan GNUisme:

find . -name 'CMake*' -type f -print0 | xargs -r0 grep -nHF {} +

find (yang pertama), xargs (di detik) akan meneruskan sebanyak mungkin argumen ke grep mungkin tanpa melebihi batas jumlah argumen yang dapat Anda berikan ke sebuah perintah. Saat melakukan pemisahan itu, bisa terjadi bahwa untuk proses terakhir, hanya satu argumen yang diteruskan ke grep dalam hal ini grep tidak akan mencetak nama file. Itu sebabnya Anda membutuhkan /dev/null di sana (atau -H dengan GNU grep ).

Dengan -type f , kami hanya mempertimbangkan file biasa (bukan perangkat, symlink, pipa, direktori…).

Jika Anda ingin menggunakan GNUisme, Anda dapat menggunakan GNU grep kemampuan untuk turun ke pohon direktori:

 grep -rHnF --include='CMake*' version .

Anda tidak ingin menggunakan -R karena itu menyebabkan grep untuk mengikuti symlink saat menuruni pohon direktori dan membaca dari perangkat, fifos, soket…

Versi tersebut lebih aman dan efisien, tetapi tidak portabel.


Linux
  1. Cara Menggunakan Perintah Grep untuk Menemukan Teks di File

  2. Bagaimana cara menemukan file di Ubuntu?

  3. Bagaimana Cara Mencari File Berdasarkan Ukuran Dan Ekstensi?

  1. Cara Menemukan Teks Tertentu menggunakan GREP di Linux

  2. Bagaimana saya bisa mencari pola multiline dalam sebuah file?

  3. Bagaimana cara mencari konten dari banyak file pdf?

  1. Perintah Linux:Bagaimana cara 'menemukan' hanya file teks?

  2. Bagaimana cara menemukan semua file yang berisi teks tertentu di Linux?

  3. Bagaimana cara menggunakan perintah find untuk menghapus file yang cocok dengan pola?