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 Dateidatei.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 Dateidatei.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.
Aufgabe
- Suchen Sie im Verzeichnis
/var/www/html
nach allen Dateien mit der Endung.html
und durchsuchen Sie diese nach dem Tag<body>
.