Gibt es einige Unix-util, die mir erlauben wird, grep mehrere Dateien mit nur wenig Tippen?
Frage
Jetzt kann ich dies tun eine Menge:
find * | grep py$ | xargs grep foo
Ich erinnere mich, es gibt einige util, der tut dies mit viel weniger eingeben, aber was?
UPDATE:Ich bevorzuge die Verwendung der Bash-shell, wenn möglich.
Lösung
Ich liebe ack :
Was würden Sie eher geben?
$ grep pattern $(find . -type f | grep -v '\.svn')
$ ack pattern
Andere Tipps
Sie können feststellen, Shell Ihnen hilft. Zum Beispiel in zsh , können Sie
grep foo **/*.py
die Anzahl der Py-Dateien zur Verfügung gestellt nicht die maximale Anzahl von Argumenten für einen Befehl erlaubt überschreiten (64k?). Hinweis: Sie können die Datei Globbing z qualifizieren.
grep foo **/*.py(mh-5)
was man alles in den letzten 5 Stunden geändert geben wird.
Haben Sie versucht, ack .
zsh hat rekursive Platzhalter, so dass Sie tun können
grep foo **/*.py
Schauen Sie ma, keine zu finden :)
UPDATE:Oh, auch wenn Sie nicht so viel es tut nicht weh, alias oder eine Funktion schreiben, die für Sie selbstverständlich
Es heißt grep * zwinker *: -)
Alle py in aktuellem Verzeichnis
grep -R foo *.py
Alle Dateien im aktuellen und jedes Unterverzeichnis
grep -R foo .
find . -name "*.py" -exec grep -H foo '{}' ';'
grep -r --include='*.py' foo *
Ich verwende etwas sehr ähnlich wie Ihre find / grep Paar viel, wenn auch mit noch mehr Bedingungen - mit Ausnahme von Dateien in .svn Verzeichnissen, zum Beispiel. Ich tue dies, so viel ich nur Skripte um diese Anrufungen gemacht, so kann ich „src-grep ...“ nennen, und haben es im Grunde tun, was du hier tust. (Dann habe ich eine optionale Erweiterung für eine Reihe von Kontextzeilen zum grep -C Flag passieren, wenn geliefert, und eine separate Version der Ergebnisse für Definitionsanweisungen grep.)
Dies ist sinnvoller und schneller als rekursiven grep für mich.