2.5.5 Finden und Ersetzen

Übersicht über die Befehle auf dieser Seite (in fett bedeutet prüfungsrelevant):

Befehl Beispiel Beschreibung
find find / -name datei.txt Sucht nach der Datei datei.txt überall unterhalb des Wurzelverzeichnisses
grep grep 'text' datei.txt Sucht nach dem Muster "text" in der Datei datei.txt

Das Durchsuchen von Dateien und Verzeichnissen nach bestimmten Inhalten sowie das Ersetzen von Text sind häufige Aufgaben in der Linux-Administration. Hierfür sind die Befehle find und grep äußerst nützlich. Bei den beiden Befehlen handelt es sich um sehr mächtige Werkzeuge, wie wir gleich sehen werden.

Befehl "find"

Der Befehl find wird verwendet, um Dateien und Verzeichnisse anhand verschiedener Suchkriterien zu suchen.

Beispiele

  • find / -name datei.txt: Sucht nach der Datei datei.txt im gesamten Dateisystem.
  • find /home -name "*.log": Sucht nach allen Dateien mit der Endung .log im Verzeichnis /home und seinen Unterverzeichnissen.
  • find /var/www/html -mtime -7: Sucht nach Dateien im Verzeichnis /var/www/html, die in den letzten 7 Tagen geändert wurden.

Aufgabe

  • Suchen Sie nach einer Datei namens index.html im Verzeichnis /var/www.

Befehl "grep"

Der Befehl grep wird verwendet, um nach Textmustern in Dateien zu suchen.

Beispiele

  • grep 'text' datei.txt: Sucht nach dem Muster "text" in der Datei datei.txt.
  • grep -i 'error' /var/log/syslog: Sucht nach dem Muster "error" (Groß- und Kleinschreibung ignorierend) in der Datei /var/log/syslog.
  • grep -r 'TODO' /home/user/projekte: Sucht rekursiv nach dem Muster "TODO" im Verzeichnis /home/user/projekte.

Aufgabe

  • Suchen Sie nach dem Textmuster "root" in der Datei /etc/passwd.

Kombination von find und grep

Die Befehle find und grep können kombiniert werden, um Dateien zu finden und deren Inhalt nach bestimmten Mustern zu durchsuchen.

Beispiele

  • find /var/www/html -name "*.html" -exec grep '<body>' {} \;: Sucht nach Dateien mit der Endung .html im Verzeichnis /var/www/html und durchsucht diese Dateien nach dem Muster <body>.
  • find /home -type f -name "*.txt" -exec grep 'Error' {} \;: Sucht nach Dateien mit der Endung .txt im Verzeichnis /home und durchsucht diese Dateien nach dem Muster "Error".

Auch wenn find oft zusammen mit grep genutzt wird, so sind auch andere Kombinationen sinnvoll verwendbar. find

Aufgabe

  • Suchen Sie im Verzeichnis /var/www/html nach allen Dateien mit der Endung .html und durchsuchen Sie diese nach dem Tag <body>.