find

find -name Datei sucht nach der Datei

find . -name bild.jpg sucht nach bild.jpg. Der Punkt weist find an, alle Ordner ab dem aktuellen Verzeichnis zu durchsuchen.

find /mnt/cdrom/bilder -name bild.jpg Dieser Befehl durchsucht das Verzeichnis bilder einer nach /mnt/cdrom gemounteten CD.

Weiß man nicht mehr, ob die Datei groß oder kleingeschrieben war hilft iname: find . -iname holmes.jpg

Mit Wildcards: find . -name "blo*"

Große Dateien: find . -size +1000k zeigt alles an, was größer als 1000 KB ist. Lässt man das Pluszeichen weg, sucht find nach Dateien mit genau der angegebenen Größe, mit einem Minuszeichen (zum Beispiel -50k) setzt man einen Maximalwert.

Zeit: -mtime („modification time“=Änderungszeit). find . -mtime 0 präsentiert alles, was sich in den letzten 24 Stunden geändert hat, -mtime 2 die geänderten Dateien der letzten zwei Tage.
find . -mmin -5 findet alle Dateien, die in den letzten 5 Minuten geändert wurden.

Nur Verzeichnisse oder nur Dateien anzeigen? Mit -type beschränkt man die Suche auf bestimmte Typen: find . -type d für Verzeichnisse („directory“), f für Dateien („file“) oder l für symbolische Links.

find . -name "*.txt" -exec less "{}" ";" über gibt alle gefundenen Dateien an less zur Anzeige

find -name "*.jpeg" -print0 -exec cp \{\} /home/user/temp/ \; sucht alle Dateien mit der Endung jpeg und kopiert diese in das Verzeichnis temp

find -name ".*" -exec rm -rf "{}" \; löscht rekursiv alle versteckten Dateien – Achtung: Dieser Befehl ist sehr gefährlich, die Dateien können nicht wiedergeholt werden!

find . -size +100M -exec ls -lh '{}' \; sucht Dateien größer 100MB

tree -ifs --noreport .|sort -n -k2 alle Dateien der Größe nach aufsteigend
Will man sehr viele Dateien zu verarbeiten, verwendet man eine For-Schleife:

for file in $(find "*.bak"); do 
rm $file
done

In Dateien suchen, wenn man „grep“ mit dem Schalter „-H“ aufruft:
find . -name "*.txt" -exec grep -H "suchbegriff" {} \;