Saya ingin grep semua file kecuali beberapa tipe file?


36

Bagaimana cara grepfile secara rekursif dalam folder yang diberikan kecuali beberapa jenis file?

Sebagai contoh, saya mencari string dalam folder ruang kerja saya tetapi akhirnya mencari di dalam file sql dan menghasilkan string serial.

Jadi dalam hal ini, saya ingin ke grepfolder ruang kerja kecuali file sql.

Saya lebih suka mencari satu-liner jika memungkinkan.


5
Ketahuilah bahwa Linux dan Unix dan unix-a-likes tidak benar-benar memiliki "tipe file" seperti yang Anda inginkan. Hanya berdasarkan kebiasaan bahwa nama file memiliki akhiran ".c" atau ".txt" atau ".sql" - sufiks itu bahkan bukan "ekstensi" gaya-Windows, apalagi indikator yang ditayangkan langsung oleh SQL atau teks atau kode sumber C di dalam file.
Bruce Ediger

Jawaban:



8

Ini akan melakukannya untuk Anda dan mengecualikan file .sql dan .txt:

find /some/dir -type f ! -name '*\.sql' ! -name '*.txt' -print0 | xargs -0 grep 'foobar'

Namun sepertinya ACK akan menjadi alat yang jauh lebih baik untuk apa yang Anda coba lakukan:

ack -a --nosql 'foobar' /some/dir

Maaf, saya tidak melihat bagian 'ack' dan memasukkannya ke dalam jawaban saya, yang sekarang dihapus.
Peluang

Catatan pengguna lain yang ack - a --nobinarymencakup file biner
Michael Mrozek

Garis miring terbalik dalam pola nama file tidak diperlukan.
Kusalananda
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.