Ich möchte alle Dateien mit Ausnahme einiger Dateitypen prüfen.


36

Wie kann ich grepDateien in einem bestimmten Ordner mit Ausnahme einiger Dateitypen rekursiv bearbeiten?

Zum Beispiel suche ich in meinem Arbeitsbereichsordner nach einer Zeichenfolge, die dann in SQL-Dateien durchsucht und serialisierte Zeichenfolgen generiert wird.

In diesem Fall möchte ich grepden Arbeitsbereich-Ordner mit Ausnahme von SQL-Dateien.

Ich suche vorzugsweise einen Einzeiler, wenn möglich.


5
Beachten Sie, dass Linux und Unix und Unix-a-likes nicht wirklich "Dateitypen" haben, wie Sie es zu wollen scheinen. Es ist nur eine Konvention, dass Dateinamen das Suffix ".c" oder ".txt" oder ".sql" haben - diese Suffixe sind nicht einmal Windows-artige "Erweiterungen", geschweige denn Indikatoren, die SQL oder Text oder C-Quellcode leben in den Dateien.
Bruce Ediger

Antworten:



8

Dies erledigt das für Sie und schließt .sql- und .txt-Dateien aus:

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

Es hört sich jedoch so an, als wäre ack ein weitaus besseres Werkzeug für das, was Sie versuchen:

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

Entschuldigung, ich habe den 'ack'-Teil nicht gesehen und in meine Antwort eingefügt, die nun gelöscht ist.
Chance

Ein anderer Benutzer stellt fest, dass ack - a --nobinaryBinärdateien enthalten sind
Michael Mrozek

Der Backslash im Dateinamenmuster wird nicht benötigt.
Kusalananda
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.