grep für Dateiinhalt, aber gibt den Dateinamen zurück

grep für Dateiinhalt, aber gibt den Dateinamen zurück

Ich benötige die GREP-Syntax für die folgende Aufgabe (ich verwende ein LINUX-Betriebssystem):

Abfragen ALLER Dateien im AKTUELLEN Verzeichnis, die STRING enthalten, aber Auflisten nur der DATEINAMEN, die eine Übereinstimmung enthalten.

Danke!

Antwort1

Sie können

grep -rl stringToSearch .

oder

 find . -type f -exec grep -l stringToSearch {} \;

Weitere Informationen zu grepund anderen Unix-Befehlen finden Sie im Handbuch ( man)

In diesem Fall man grepheißt es:

-l, --files-with-matches Unterdrückt die normale Ausgabe; druckt stattdessen den Namen jeder Eingabedatei, aus der normalerweise eine Ausgabe gedruckt worden wäre.
Der Scan wird bei der ersten Übereinstimmung angehalten.

Wenn Ihr String Sonderzeichen oder Leerzeichen enthält, müssen Sie diese natürlich als Bash-Befehl maskieren und/oder Ihren String mit Kontingenten umgeben.

Antwort2

„Grep -l“ gibt Ihnen die Liste der Dateinamen.

> echo "hello" > test_file1.list
> echo "hello2.." > test_file2.list
> echo "xyz" > test_file3.list


> grep "hello" test_file*list

test_file1.list:hello
test_file2.list:hello2..


> grep -l "hello" test_file*list
test_file1.list
test_file2.list

verwandte Informationen