grep -rnw '/path/to/somewhere/' -e 'pattern'
-r
oder-R
ist rekursiv,-n
ist die Zeilennummer, und-w
steht für “das ganze Wort suchen (match the whole word).-l
(kleines L) zeigt nur den Dateinamen der passenden Dateien an, nicht das Ergebnis selbst.-e
ist das bei der Suche verwendete Muster-I
binarys überspringen-i
steht für ignore case (Gross-/Kleinschreibung ignorieren)
Daneben können auch die Flags --exclude
, --include
, --exclude-dir
für eine effiziente Suche verwendet werden:
- Damit werden nur die Dateien durchsucht, die die Erweiterungen .c oder .h haben:
grep --include=\*.{c,h} -rnw '/path/to/somewhere/' -e "pattern"
- Dies schließt die Suche nach allen Dateien aus, die mit der Erweiterung .o enden:
grep --exclude=\*.o -rnw '/path/to/somewhere/' -e "pattern"
- Bei Verzeichnissen ist es möglich, ein oder mehrere Verzeichnisse mit dem Parameter
--exclude-dir
auszuschließen. So werden beispielsweise die Verzeichnissedir1/
,dir2/
und alle Verzeichnisse, die mit*.dst/
übereinstimmen, ausgeschlossen:grep --exclude-dir={dir1,dir2,*.dst} -rnw '/path/to/search/' -e "pattern"
Es kann auch Folgendes genutzt werden:
grep -r "string to be searched" /path/to/dir
Das r
steht für rekursiv, es wird also im angegebenen Path und allen Unterverzeichnissen gesucht. Dies zeigt den Dateinamen an und gibt die Zeile in der Datei aus, in der die Zeichenfolge erscheint.
Das Ganze würde auch mit find gehen. Im folgenden Beispiel wird in allen Javascript Dateien (*.js) gesucht:
find . -name '*.js' -exec grep -i 'string to search for' {} \; -print
Dies gibt die Zeilen in den Dateien aus, in denen der Text vorkommt, aber nicht den Dateinamen.
Zusätzlich zu diesem Befehl können wir auch Folgendes schreiben:
grep -rn "String to search" /path/to/directory/or/file
-r: rekursiv suchen
n: Zeilennummer für Ergebnisse anzeigen
Für weitere Optionen, siehe man grep