
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 grep
und anderen Unix-Befehlen finden Sie im Handbuch ( man
)
In diesem Fall man grep
heiß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