alle PHP-Dateien zu sehen, die „abc“ Ich kann dieses einfache Skript enthalten verwenden:ein Shell-Skript schreiben, das und gibt Dateinamen und den Inhalt in 1 line-greps finden
find . -name "*php" -exec grep -l abc {} \;
ich die -l weglassen und ich bekomme einen Teil des Inhalts anstelle der Dateinamen als Ergebnisse extrahiert:
find . -name "*php" -exec grep abc {} \;
Was würde ich mag jetzt ist eine Version, die beide zur gleichen Zeit der Fall ist, aber auf der gleichen Linie.
Erwartete Ausgabe:
path1/filename1: lorem abc ipsum
path2/filename2: ipsum abc lorem
path3/filename3: non abc quod
Mehr oder weniger wie grep abc *
tut.
Edit: Ich möchte dies als ein einfaches Shell-Skript verwenden. Es wäre großartig, wenn die Ausgabe in einer Zeile wäre, also wäre ein weiteres Greifen möglich. Aber es ist nicht notwendig, dass das Skript nur eine Zeile ist, ich stelle es sowieso in eine Bash-Skript-Datei.
Bearbeiten 2: Später fand ich "ack", das ist ein großartiges Werkzeug und ich benutze das jetzt in den meisten Fällen anstelle von Grep. Es macht all dies und mehr. http://betterthangrep.com/ Sie würden ack --php --nogroup abc
schreiben das gewünschte Ergebnis zu erhalten
Die -H nicht mit xargs benötigt wird, da grep ist mehr als eine Datei auf dem Zeilenbefehl empfängt, und in diesem Fall ist es gibt den Dateinamen zusammen mit dem Capture aus; Ich denke, es ist ein Standardverhalten und sollte auch auf anderen Greps funktionieren. Beachten Sie, dass es besser ist, 'find ... -print0' zu verwenden und die Ausgabe nach 'xargs-0' zu leiten, so dass ein 0-Trennzeichen verwendet wird und Ihr Befehl auch mit fiesen Dateinamen funktioniert (zB mit Leerzeichen) . –
Vielen Dank für Ihren Kommentar. Ich habe die Antwort aktualisiert. – Stephan202
Beachten Sie, dass die andere Möglichkeit, die Möglichkeit einer Datei an grep übergeben zu können, darin besteht, den Befehl/dev/null hinzuzufügen, sodass grep immer mindestens zwei Dateien durchsuchen muss. Die '-H'-Option für Grep ist nicht Teil der POSIX-Spezifikation - es ist eine nützliche GNU-Erweiterung. –