find ist der Linux-/Unix-Befehl, um Dateien und Verzeichnisse nach Name, Typ, Größe, Zeitstempel und Rechten im gesamten Dateisystem zu suchen — viel flexibler als die reine Namenssuche.

Grundlagen

find /var/log -name "*.log"        # nach Name mit Wildcard
find . -type f -name "*.conf"      # nur Dateien (nicht Verzeichnisse)
find . -type d -name "backup"      # nur Verzeichnisse

Nach Größe und Zeit suchen

find /home -size +100M             # größer als 100 MB
find . -mtime -7                   # in den letzten 7 Tagen geändert
find . -mmin -60                   # in der letzten Stunde geändert

Aktionen und Kombinationen

find . -name "*.tmp" -delete       # gefundene Dateien löschen
find . -name "*.log" -exec grep -l "ERROR" {} ;
find . -type f | xargs wc -l       # Zeilen aller Dateien zählen

Praxis-Tipps

  • -name ist Groß-/Kleinschreibung-sensitiv, -iname ignoriert sie.
  • Mit -maxdepth 2 die Suche auf zwei Ebenen begrenzen — spart enorm Zeit.
  • Vor -delete immer erst ohne Option suchen und die Trefferliste prüfen.
  • find . -type f -name "*.tmp" -exec rm {} ; leistet dasselbe wie -delete, ist aber portabler.

Verwandte Grundlagen: grep-Befehle, Bash-Befehle und sed-Befehle.