Bazı dosya türleri dışındaki tüm dosyaları grep etmek ister misiniz?


36

grepBelirli bir klasördeki dosyaları, birkaç dosya türü dışında tekrarlı olarak nasıl yaparım ?

Örneğin, çalışma alanı klasörümde bir dize arıyorum ancak sql dosyalarının içinde arama biter ve serileştirilmiş dizeler oluşturur.

Yani bu durumda, grepsql dosyaları hariç çalışma klasörü için istiyorum .

Mümkünse tercihen bir astar arıyorum.


5
Linux ve Unix ve unix-a-like'ların gerçekten istediğiniz gibi "dosya türüne" sahip olmadığının farkında olun. Yalnızca dosya adlarının ".c" veya ".txt" veya ".sql" sonekine sahip olduğu kurallarına göre - bu son ekler bile Windows tarzı "uzantılar" değildir, SQL veya metin veya C kaynak kodunun yaşadığının çok daha az göstergesidir dosyaların içinde.
Bruce Ediger

Yanıtlar:



8

Bu sizin için yapacak ve .sql ve .txt dosyalarını hariç tutacaktır:

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

Ancak benziyor ack Yapmaya çalıştığınız şey için çok daha iyi bir araç olacaktır:

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

Üzgünüm, 'ack' kısmını görmedim ve cevabımı yazdım, bu silindi.
Şans

Başka bir kullanıcı notlarıack - a --nobinary ikili dosyaları içerir
Michael Mrozek

Dosya adı düzeninde ters eğik çizgi gerekli değildir.
Kusalananda
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.