Eine übersichtliche Darstellung des Befehls find in Linux
Der Befehl find ist ein mächtiges Werkzeug unter Linux zum Durchsuchen von Verzeichnissen nach Dateien und Verzeichnissen, die bestimmten Kriterien entsprechen. Im Folgenden werden die wichtigsten Parameter und Optionen detailliert erklärt.
Grundlegende Syntax
find [Suchpfad] [Suchkriterien] [Aktionen]- Suchpfad: Startpunkt der Suche (z.B.
/,.,/home/user). - Suchkriterien: Bedingungen, die Dateien oder Verzeichnisse erfüllen müssen.
- Aktionen: Maßnahmen, die auf gefundene Dateien oder Verzeichnisse angewendet werden.
Häufig verwendete Optionen
Suche nach Dateinamen
Exakte Namenssuche
find . -name "datei.txt"-name "Muster": Sucht nach Dateien oder Verzeichnissen, deren Name exakt dem angegebenen Muster entspricht.- Beachtung der Groß- und Kleinschreibung.
Namenssuche ohne Beachtung der Groß- und Kleinschreibung
find . -iname "Datei.txt"-iname "Muster": Wie-name, jedoch ohne Beachtung der Groß- und Kleinschreibung.
Verwendung von Platzhaltern
find /var/log -name "*.log"- Platzhalter wie
*und?können im Muster verwendet werden.
Suche nach Dateityp
find / -type [Typ]-type f: Sucht nach regulären Dateien.-type d: Sucht nach Verzeichnissen.-type l: Sucht nach symbolischen Links.- Weitere Typen:
c: Zeichenorientierte Geräte-Datei.b: Blockorientierte Geräte-Datei.s: Socket-Datei.p: Named Pipe (FIFO).
Suche nach Dateigröße
find . -size [+/-]Größe[Einheit]-
-size N: Sucht nach Dateien mit der exakten Größe N. -
+N: Größer als N. -
-N: Kleiner als N. -
Einheiten:
c: Byte.k: Kilobyte.M: Megabyte.G: Gigabyte.
-
Beispiel:
find . -size +10MSucht nach Dateien größer als 10 Megabyte.
Suche nach Zeitstempeln
Letzter Zugriff (-atime)
find . -atime [+/-]N-atime N: Dateien, die vor N*24 Stunden zuletzt gelesen wurden.+N: Vor mehr als N Tagen.-N: Innerhalb der letzten N Tage.
Letzte Änderung des Inhalts (-mtime)
find . -mtime [+/-]N-mtime N: Dateien, deren Inhalt vor N*24 Stunden zuletzt geändert wurde.
Letzte Änderung der Metadaten (-ctime)
find . -ctime [+/-]N-ctime N: Dateien, deren Metadaten (z.B. Berechtigungen) vor N*24 Stunden geändert wurden.
Suche nach Berechtigungen
find . -perm [Mode]-perm 644: Dateien mit exakt den Berechtigungen 644.-perm -644: Dateien, bei denen alle angegebenen Berechtigungsbits gesetzt sind.-perm /644: Dateien, bei denen mindestens eines der angegebenen Berechtigungsbits gesetzt ist.
Suche nach Besitzer und Gruppe
Nach Benutzer
find . -user benutzername-user: Sucht nach Dateien, die einem bestimmten Benutzer gehören.
Nach Gruppe
find . -group gruppenname-group: Sucht nach Dateien, die einer bestimmten Gruppe gehören.
Suche nach leeren Dateien oder Verzeichnissen
find . -empty-empty: Sucht nach leeren Dateien oder Verzeichnissen.
Kombinieren von Kriterien
Logische Operatoren
-and: Logisches UND (Standard zwischen Kriterien).-or: Logisches ODER.!oder-not: Negation.
Beispiel:
find . -type f -name "*.sh" -or -name "*.py"Sucht nach Dateien mit der Endung .sh oder .py.
Einschränkung der Suche
Maximale Tiefe
find . -maxdepth N-maxdepth N: Durchsucht maximal N Verzeichnisebenen.
Minimale Tiefe
find . -mindepth N-mindepth N: Beginnt die Suche ab Ebene N.
Ausführen von Aktionen
Ausführen eines Befehls auf gefundene Dateien
find . -name "*.log" -exec rm {} \;-
-exec: Führt einen Befehl auf jede gefundene Datei aus. -
{}: Platzhalter für den Dateipfad. -
\;: Abschluss des Befehls. -
Beispiel:
find . -type f -name "*.bak" -exec rm {} \;Löscht alle
.bak-Dateien.
Interaktive Ausführung
find . -name "*.conf" -ok chmod 640 {} \;-ok: Wie-exec, jedoch mit Bestätigungsaufforderung vor jeder Ausführung.
Aktionen ohne -exec
-
-print: Gibt den vollständigen Pfad der gefundenen Dateien aus (Standardverhalten). -
-delete: Löscht gefundene Dateien oder Verzeichnisse.find . -type f -name "*.tmp" -deleteLöscht alle
.tmp-Dateien.
Beispiele für praktische Anwendungsfälle
Suche nach großen Dateien
find / -type f -size +1G- Findet Dateien größer als 1 Gigabyte.
Suche nach Dateien mit bestimmten Berechtigungen
find /var/www -type f -perm 644- Sucht nach Dateien mit Berechtigung 644 im Verzeichnis
/var/www.
Suchen und Archivieren von Log-Dateien
find /var/log -type f -name "*.log" -mtime +30 -exec gzip {} \;- Komprimiert Log-Dateien, die älter als 30 Tage sind.
Finden von kürzlich modifizierten Dateien
find . -type f -mmin -60- Findet Dateien, die in den letzten 60 Minuten geändert wurden.
Weitere nützliche Optionen
Ausschluss von Verzeichnissen
find / -path "/proc" -prune -o -name "datei.txt" -print-prune: Überspringt das angegebene Verzeichnis.- Beispiel: Sucht nach
datei.txt, wobei/procnicht durchsucht wird.
Limitierung der Ausgabe auf die ersten N Ergebnisse
find . -type f -print | head -n 10- Nutzt
headzur Anzeige der ersten 10 gefundenen Dateien.
Zusätzliche Informationen anzeigen
find . -type f -exec ls -lh {} \;- Führt
ls -lhauf jede gefundene Datei aus, um detaillierte Informationen anzuzeigen.
Hinweise zur Verwendung
- Achten Sie bei der Verwendung von
-execoder-deletedarauf, dass die Kriterien korrekt sind, um unbeabsichtigtes Löschen oder Ändern von Dateien zu vermeiden. - Testen Sie komplexe
find-Befehle zunächst ohne destruktive Aktionen, um sicherzustellen, dass sie die gewünschten Dateien finden.
linuxterminalfindkommandoreferenzdateisucheshellcheatsheetadministrationbefehlszeile