Find
Inhaltsverzeichnis
NAME
find - Suche nach Dateien in einer Verzeichnisstruktur
SYNOPSIS
find [-H] [-L] [-P] [-D debugopts] [-Olevel] [Startpunkt...] [Expression]
BESCHREIBUNG
Dieses Handbuch beschreibt die GNU-Version von find
. find durchsucht den Verzeichnisbaum ab dem angegebenen Startpunkt und bewertet die Expression von links nach rechts gemäß den Präzedenzregeln.
OPTIONEN - Erklärung
Die folgenden Optionen steuern das Verhalten von find. Sie können einzeln oder in Kombination verwendet werden. Beachte, dass manche Optionen eine bestimmte Reihenfolge erfordern, insbesondere -exec
oder -prune
.
Suchverhalten für symbolische Links
- -P (Standard)
Verfolgt keine symbolischen Links. Falls find auf einen symbolischen Link trifft, wird dieser als Link behandelt und nicht das eigentliche Ziel überprüft.
- -L
Folgt symbolischen Links und betrachtet die Eigenschaften des Zieldateisystems.
- -H
Symbolische Links auf der Kommandozeile werden verfolgt, aber nicht innerhalb des Suchlaufs.
Steuerung der Suchtiefe
- -maxdepth <n>
Legt die maximale Anzahl an Verzeichnisebenen fest, die durchsucht werden.
- -mindepth <n>
Überspringt Dateien oder Verzeichnisse, die weniger als n Ebenen tief sind.
Filtern nach Zeitstempeln
- -atime <n>
Findet Dateien, die vor n Tagen zuletzt geöffnet wurden.
- -mtime <n>
Findet Dateien, die vor n Tagen zuletzt geändert wurden.
- -ctime <n>
Findet Dateien, deren Metadaten vor n Tagen geändert wurden.
Filtern nach Dateigröße
- -size +<n>[c/k/M/G]
Sucht nach Dateien, die größer als n Bytes (c), Kilobytes (k), Megabytes (M) oder Gigabytes (G) sind.
- -empty
Findet leere Dateien oder Verzeichnisse.
Aktionen mit gefundenen Dateien
Gibt die gefundenen Dateipfade aus (Standardaktion).
- -delete
Löscht gefundene Dateien (Vorsicht: Kann nicht rückgängig gemacht werden!).
- -exec <Befehl> {} \;
Führt den angegebenen Befehl für jede gefundene Datei aus.
- -execdir <Befehl> {} \;
Führt den Befehl im Verzeichnis der Datei aus (sicherer als
-exec
).
BEISPIELE
Grundlegende Suchen
- Alle ".log"-Dateien im Verzeichnis suchen
find /var/log -name "*.log"
- Alle versteckten Dateien im Home-Verzeichnis finden
find ~/ -name ".*"
- Alle Dateien eines bestimmten Typs finden (z. B. nur Verzeichnisse)
find /etc -type d
- Löscht nur Inhalt des Verzeichnisses, nicht auch das Verzeichnis selbst. Auch leere Verzeichnisse werden gelöscht.
find .../verzeichnis/ -mindepth 1 -depth -delete
Dateigrößen- und Zeitfilter
- Alle Dateien größer als 100 MB finden
find /var/log -type f -size +100M
- Alle Dateien, die in den letzten 30 Minuten geändert wurden
find /home -type f -mmin -30
- Alle Dateien, die vor mehr als 7 Tagen erstellt wurden
find /backup -ctime +7
Aktionen mit -exec
- Alle .sh-Dateien ausführbar machen
find /scripts -type f -name "*.sh" -exec chmod +x {} \;
- Alle .log-Dateien löschen
find /var/log -type f -name "*.log" -delete
- Alle .tmp-Dateien löschen (nur mit Bestätigung)
find /tmp -type f -name "*.tmp" -ok rm {} \;
- Alle .jpg-Dateien in ein Archiv packen
find ~/Pictures -type f -name "*.jpg" | tar -cvzf bilder.tar.gz -T -
Benutzer und Berechtigungen
- Alle Dateien, die einem bestimmten Benutzer gehören
find /home -type f -user alice
- Alle Dateien mit bestimmten Berechtigungen finden
find /var/www -type f -perm 644
- Alle ausführbaren Dateien (potenziell unsicher) finden
find /home -type f -executable
Fortgeschrittene Suchen
- Symbolische Links, die ins Leere zeigen, finden
find / -type l -xtype f
- Bestimmte Verzeichnisse vom Suchlauf ausschließen
find / -path "/proc" -prune -o -type f -name "*.conf" -print
- Mehrere Bedingungen kombinieren: Alle .log- und .txt-Dateien finden
find /var -type f \( -name "*.log" -o -name "*.txt" \)
Performance-Optimierung
- Alle .log-Dateien mit
xargs
schneller löschen find /var/log -type f -name "*.log" -print0 | xargs -0 rm
- Dateien mit mehreren Threads finden und verarbeiten
find /data -type f -name "*.csv" | parallel -j4 process_file.sh
Letzte Änderung am Aktualisiert am: 15.06.2025