Meistere den find-Befehl: Dateien und Verzeichnisse gezielt suchen und bearbeiten
Der find-Befehl ist eines der mächtigsten Werkzeuge in der Linux/Unix-Kommandozeile. Er ermöglicht es dir, Dateien und Verzeichnisse basierend auf einer Vielzahl von Kriterien (Name, Größe, Datum, Berechtigungen usw.) zu suchen und direkt Aktionen mit ihnen auszuführen.
In diesem Tutorial lernst du die wichtigsten Grundlagen und fortgeschrittene Techniken.
1. Die Grundstruktur
Die Syntax von find sieht allgemein so aus:
find [Pfad] [Suchkriterien] [Aktion]
- Pfad: Wo soll gesucht werden? (z.B.
.für aktuelles Verzeichnis,/für das ganze System). - Suchkriterien: Wonach suchst du? (Name, Größe, etc.).
- Aktion: Was soll mit den Ergebnissen passieren? (Standardmäßig:
-print, also anzeigen).
2. Suchen nach Namen
Dies ist der häufigste Anwendungsfall.
- Exakter Name:
find . -name "beispiel.txt" - Ignorieren von Groß-/Kleinschreibung (
-iname):find . -iname "beispiel.txt" # findet auch Beispiel.txt oder BEISPIEL.txt - Suche mit Platzhaltern (Wildcards):
Suche alle
.jpgDateien:find . -name "*.jpg"
3. Suchen nach Dateityp (-type)
Manchmal möchtest du nur nach Ordnern oder nur nach Dateien suchen.
- Nur Dateien suchen (
ffür file):find /pfad -type f -name "test" - Nur Verzeichnisse suchen (
dfür directory):find /pfad -type d -name "konfig"
4. Suchen nach Dateigröße (-size)
Ideal, um "Speicherfresser" zu finden.
- Dateien größer als 100 MB:
find / -size +100M - Dateien kleiner als 10 KB:
find . -size -10k - Dateien mit exakt 50 MB:
find . -size 50M
5. Suchen nach Zeitstempel
find kann nach Änderungsdatum (mtime), Zugriffsdatum (atime) oder Statusänderung (ctime) suchen. Die Zahl gibt die Tage an.
- In den letzten 7 Tagen geändert:
find . -mtime -7 - Vor mehr als 30 Tagen das letzte Mal aufgerufen:
find . -atime +30 - In den letzten 60 Minuten geändert:
find . -mmin -60
6. Suchen nach Berechtigungen und Besitzern
- Nach Berechtigungen suchen (z.B. "777" - jeder darf alles):
find . -perm 777 - Nach einem bestimmten User suchen:
find /home -user max
7. Kriterien kombinieren (Logik)
Du kannst Bedingungen mit "UND" (Standard), "ODER" (-o) und "NICHT" (!) verknüpfen.
-
Suche Dateien, die auf
.shenden UND dem Userrootgehören:find . -name "*.sh" -user root -
Suche Dateien, die entweder
.pdfODER.docsind:find . \( -name "*.pdf" -o -name "*.doc" \)(Hinweis: Die Klammern müssen mit Backslashes maskiert werden.)
-
Suche alle Dateien, die KEINE
.txtDateien sind:find . -type f ! -name "*.txt"
8. Aktionen mit den Suchergebnissen ausführen
Das ist der Punkt, an dem find extrem mächtig wird.
-
Löschen (
-delete): Vorsicht: Teste die Suche vorher ohne-delete!find . -name "*.log" -delete -
Befehle ausführen (
-exec): Du kannst jedes Programm auf die gefundenen Dateien anwenden. Die Syntax{}ist ein Platzhalter für die gefundene Datei, und\;beendet den Befehl.Beispiel: Ändere die Rechte aller
.shDateien auf ausführbar:find . -name "*.sh" -exec chmod +x {} \;Beispiel: Kopiere alle gefundenen Bilder in einen Backup-Ordner:
find . -name "*.jpg" -exec cp {} /path/to/backup/ \;
Pro-Tipp: Fehlermeldungen unterdrücken
Wenn du als normaler User im System suchst (z.B. ab /), erhältst du oft "Permission denied"-Meldungen. Du kannst diese ausblenden, indem du den Error-Stream nach /dev/null umleitest:
find / -name "geheim.txt" 2>/dev/null
Zusammenfassung der wichtigsten Schalter:
| Schalter | Bedeutung |
|---|---|
-name |
Suche nach Dateiname |
-iname |
Suche nach Name (ignoriert Groß/Klein) |
-type f |
Nur Dateien |
-type d |
Nur Verzeichnisse |
-size |
Größe (+ mehr als, - weniger als) |
-mtime |
Änderung in Tagen |
-user |
Gehört bestimmtem Benutzer |
-exec |
Führt einen Befehl aus |
-delete |
Löscht die Ergebnisse |
Viel Erfolg beim Suchen und Verwalten deiner Dateien!