Gefilterte Liste von Dateien, die String enthalten

Gefilterte Liste von Dateien, die String enthalten

Ich suche nach Dateien, die eine Zeichenfolge enthalten. Mein Befehl:

grep -rwl '/path/' -e "string"

Ich möchte das Ergebnis auf Pfade beschränken, die eine andere Zeichenfolge enthalten. Das kann ich so machen:

grep -rwl '/path/' -e "string" | grep 'path_string'

Ich möchte die Ausführung, wenn möglich, optimieren, indem ich zunächst nur Pfade mit dem „path_string“ betrachte. Wie kann ich das erreichen?

Antwort1

Sie können findbeispielsweise -pathverwenden

find /path -path '*path_string*' -type f -exec grep -qw 'string' {} \; -print

Dadurch wird /pathnach Dateinamen gesucht, die einem Shell-Muster entsprechen *path_string*, und es werden grepnur diese Dateien ausgeführt. Bei Erfolg werden ihre Namen ausgedruckt.


1: die Musterübereinstimmung wird auf den gesamten Dateinamen angewendet, beginnend mit/path/

verwandte Informationen