Linux: find text in files

„Find text in files“ wird in Linux mit dem mächtigen Befehl grep erledigt:

Befehl:

grep -rnwi '/Pfad/zu/Ordner/' -e 'Textschnipsel'

Ausgabe: Pfad zur Datei : Zeilennummer : Textzeile

    -r bedeutet rekursiv.
    -n zeigt die Zeile der Datei an, wo der Textschnipsel gefunden wurde.
    -w bedeutet, dass der Textschnipsel als Ganzes übereinstimmen muss. Wer nach „Haus“ mit -w sucht, findet nicht „Haustür“.
    -i bedeutet, dass nicht zwischen Groß- und Kleinschreibung unterschieden wird.
    -l kann optional ergänzt werden, um nur den Dateipfad auzugeben, in welcher der Textschnipsel vorkommt.

Beispiele:

Sucht im Home-Verzeichnis und Unterordnern des Nutzers „zina“nach Dateien, die genau das Wort „lorem“ enthalten:

grep -rnwi '/home/zina/' -e 'lorem'

Beachte: Findet „lorem“ (klein geschrieben) und „Lorem“ (groß geschrieben). Für Unterscheidung zwischen Groß- und Kleinschreibung müsst ihr den Befehl ohne -i nutzen: grep -rnw '/home/zina/' -e 'lorem'.

Nur nach Dateien mit Dateiendung .c oder .h suchen (–inlcude):

grep --include=\*.{c,h} -rnw '/home/zina/' -e "lorem"

Nur nach Dateien ohne Dateiendung .o suchen (–exclude):

grep --exclude=*.o -rnw '/home/zina/' -e "lorem"

Bei der Suche die Verzeichnisse „dir1“, „dir2“ und alle, die auf „test“ enden, ausschließen:

grep --exclude-dir={dir1,dir2,*test} -rnw '/home/zina/' -e "lorem"