Dateinamen und Zeilennummern für die Spiele der Katze und grep
Frage
Mein Code
$ *.php | grep google
Wie kann ich drucken, um die Dateinamen und Zeilennummern neben jedes Spiel?
Lösung
grep google *.php
Wenn Sie viele Verzeichnisse zu überbrücken:
find . -name \*.php -print0 | xargs -0 grep -n -H google
(wie in den Kommentaren erklärt, -H nützlich ist, wenn xargs kommt mit nur einer verbleibenden Datei)
Andere Tipps
Sie sollten nicht tun
$ *.php | grep
bedeutet, dass „das erste PHP-Programm ausführen, mit dem Namen der übrigen Wildcards als Parameter, und dann grep auf dem Ausgang laufen“.
Es sollte sein:
$ grep -n -H "google" *.php
Die -n
Flag teilt ihm Zeilennummern zu tun, und die -H
Flag teilt es die Dateinamen angezeigt werden, auch wenn es nur Datei. Grep zeigt die Dateinamen wird standardmäßig, wenn mehrere Dateien durchsucht, aber Sie wollen wahrscheinlich um sicherzustellen, dass die Ausgabe konsistent ist unabhängig davon, wie viele passende Dateien vorhanden sind.
grep -RH "google" *.php
Bitte werfen Sie einen Blick auf ack unter http://betterthangrep.com . Das Äquivalent in ack von dem, was Sie versuchen, ist:
ack google --php
find ./*.php -exec grep -l 'google' {} \;
Verwenden Sie "man grep" andere Funktionen zu sehen.
for i in $(ls *.php); do grep -n --with-filename "google" $i; done;
find . -name "*.php" -print | xargs grep -n "searchstring"