pengembangan-web-mp.com

Pencarian teks rekursif dengan pola grep dan file

Diberikan contoh struktur folder ini:

/folder1/file1.txt[.____.[/folder1/file2.djd[.____.[/folder2/file3.txt[.____.[/folder2/file2.fha

Bagaimana saya melakukan pencarian teks rekursif pada semua *.txt file dengan grep dari "/"?

("grep -r <pattern> *.txt" gagal ketika dijalankan dari "/", karena tidak ada .txt file dalam folder itu.)

46
Anders Sandvig

Versi saya GNU Grep memiliki saklar untuk ini:

grep -R --include='*.txt' $Pattern

Dijelaskan sebagai berikut:

--include=GLOB

Cari hanya file yang nama dasarnya cocok dengan GLOB (menggunakan pencocokan wildcard seperti yang dijelaskan di bawah --exclude).

62
Kyle Brandt

Jika Anda memiliki banyak file, akan berguna untuk memasukkan xargs ke dalam perintah untuk menghindari kesalahan 'Daftar argumen terlalu panjang'.

find . -name '*.txt' -print | xargs grep <pattern>
20
Mark

anda mungkin dapat menggunakan opsi zshEXTENDED_GLOB Anda ( docs )

grep <pattern> **/*.txt
2
santa

Anda mungkin ingin melihat ack di http://betterthangrep.com , yang memiliki fasilitas untuk memilih file yang akan dicari berdasarkan filetype.

1
Andy Lester
find . -name '*.txt' -type f -exec grep <pattern> {} \;
0
innaM

Jawaban Mannis akan melakukan proses grep baru untuk setiap file teks. Jika Anda memiliki banyak dari file teks di sana, Anda dapat mempertimbangkan untuk menangkap setiap file terlebih dahulu dan memilih file .txt ketika itu dilakukan:

grep -r <pattern> * | grep \.txt:

Itu lebih intensif disk, tetapi mungkin lebih cepat pula.

0
Commander Keen

Ini tahun 2019 dan tidak mungkin saya masih menggunakan grep untuk pencarian teks rekursif.

Jawaban IMHO todays harus mencakup ripgrep :

rg <pattern> -ttxt
0
santa