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

-print

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 15.06.2025