Um unter Linux Text in Dateien zu finden ist grep ein mächtiges Tool welches viele Optionen zum suchen ermöglicht.
grep -rnwi '/Pfad/zum/Ordner' -e 'Suchbegriff'
Bedeutung der Optionen:
-r
bedeutet rekursiv, also über mehrere Ordnerebenen-w
wählt nur solche Zeilen aus, deren Treffer aus vollständigen Wörtern bestehen. So wird bei der Suche nach «Bad» keine «Badewanne» gefunden-n
gibt die Zeilennummer vor jedem Treffer aus-i
unterscheide nicht zwischen Groß- und Kleinschreibung.
Nur in bestimmten Dateitypen suchen / Dateitypen ausschliessen
Mit include und exclude kann in bestimmten Dateien gesucht werden, respektive bestimmte Dateitypen ausgeschlossen werden:
grep -rnwi --include=\*.{php,css} '/var/www/html/' -e "main"
grep -rnwi --exclude=\*.{php,css} '/var/www/html/' -e "main"
Bestimmte Ordner ausschliessen
Sollen beim Suchen bestimmte Ordner ausgeschlossen werden, so können diese über --exclude-dir
ausgeschlossen werden. Wird dem Namen des Ordners ein * angehängt, kann auch nach allen Ordnern welche mit einem Namen beginnen oder enden gesucht werden.
grep -rwni --exclude-dir={lib,wp-*,admin} '/var/www/html/' -e "main"
Im obigen Beispiel werden die Ordner «lib», «admin» und alle Ordner welche mit «wp-» beginnen ausgeschlossen.
Weitere Optionen
-A
gibt zusätzlich NUM Zeilen vor dem Kontext aus-B
gibt zusätzlich NUM Zeilen nach dem Kontext aus-C
gibt zusätzlich NUM Zeilen vor und nach dem Kontext aus. Zwischen zusammenhängende Gruppen von Treffern werden Zeilen mit «–» eingefügt-c
unterdrückt die normale Ausgabe und gibt stattdessen für jede Eingabedatei an, wieviele Zeilen auf die regular expression passen-e
verwende Muster als regular expression. Nützlich um Ausdrücke zu schützen, die mit einem-
beginnen.-H
gibt den Dateinamen vor jedem Treffer aus.-P
verwendet Perl regular expressions.
Da ist ein Fehler bei -A und -B drin.
laut der man-Page ist korrekt:
-A ZAHL, –after-context=ZAHL
Zeigt ZAHL Kontextzeilen im Anschluss an eine auf das Muster passende Zeile an. Gibt eine Zeile mit einem Gruppentrennzeichen (–) zwischen benachbarten
Gruppen von Treffern aus. Zusammen mit der Option -o oder –only-matching hat diese Option keine Auswirkung und es wird eine Warnung ausgegeben.
-B ZAHL, –before-context=ZAHL
Zeigt ZAHL Kontextzeilen vor einer auf das Muster passenden Zeile an.Gibt eine Zeile mit einem Gruppentrennzeichen (–) zwischen benachbarten Gruppen von
Treffern aus. Zusammen mit der Option -o oder –only-matching hat diese Option keine Auswirkung und es wird eine Warnung ausgegeben.