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.txtim gesamten Dateisystem.
- find /home -name "*.log": Sucht nach allen Dateien mit der Endung- .logim Verzeichnis- /homeund 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.htmlim 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- .htmlim Verzeichnis- /var/www/htmlund durchsucht diese Dateien nach dem Muster- <body>.
- find /home -type f -name "*.txt" -exec grep 'Error' {} \;: Sucht nach Dateien mit der Endung- .txtim Verzeichnis- /homeund durchsucht diese Dateien nach dem Muster "Error".
Auch wenn find oft zusammen mit grep genutzt wird, so sind auch andere Kombinationen sinnvoll verwendbar.

Aufgabe
- Suchen Sie im Verzeichnis /var/www/htmlnach allen Dateien mit der Endung.htmlund durchsuchen Sie diese nach dem Tag<body>.