Wie kann ich alle Verzeichnisse und Unterverzeichnisse rekursiv grep
?
find . | xargs grep "texthere" *
grep -r "texthere" .
Der erste Parameter steht für den regulären Ausdruck, nach dem gesucht werden soll, während der zweite Parameter das Verzeichnis angibt, das durchsucht werden soll. In diesem Fall steht .
für das aktuelle Verzeichnis.
Hinweis: Dies funktioniert für GNU grep, und auf einigen Plattformen wie Solaris müssen Sie speziell GNU grep im Gegensatz zur Legacy-Implementierung verwenden. Für Solaris ist dies der Befehl ggrep
.
Wenn Sie die Erweiterung oder das Muster der gewünschten Datei kennen, können Sie auch die Option --include
verwenden:
grep -r --include "*.txt" texthere .
Sie können die auszuschließenden Dateien auch mit --exclude
angeben.
Wenn Sie häufig Code durchsuchen, ist Ag (The Silver Searcher) eine viel schnellere Alternative zu grep, die für die Suche im Code angepasst ist. Zum Beispiel ist es standardmäßig rekursiv und ignoriert automatisch Dateien und Verzeichnisse, die in .gitignore
aufgelistet sind, so dass Sie nicht ständig die gleichen umständlichen exclude Optionen an grep oder find übergeben müssen.
Auch:
find ./ -type f -print0 | xargs -0 grep "foo"
aber grep -r
ist eine bessere Antwort.