Gibt es einige Unix-util, die mir erlauben wird, grep mehrere Dateien mit nur wenig Tippen?

StackOverflow https://stackoverflow.com/questions/1028107

  •  06-07-2019
  •  | 
  •  

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.

War es hilfreich?

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.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top