Springe zu: Hauptnavigation, Themennavigation, Seiteninhalt, Spezielle Seiten

Dateien aufspüren mit find

Mit dem Programm find kann man Dateien und Verzeichnisse anhand verschiedener Kriterien suchen. Möchte man die gefundenen Dateien z. B. mit tar archivieren, ist auch das kein Problem.

In diesem Artikel stelle ich ein paar Beispiele des Befehls vor. Weitere informationen findest du in der Manpage zu find, die mit folgendem Befehl aufgerufen werden kann:

man find

Suchkriterien

Ruft man das Programm ohne weitere Argumente auf, wird das aktuelle Verzeichnis durchsucht und alle gefundenen Dateien ausgegeben.

Das Verhalten von find kann durch verschiedene Suchkriterien beeinflusst werden. Ein paar stelle ich in diesem Abschnitt vor.

Möchte man nach allen Dateien suchen, die auf die Endung .jpg enden und keine Rücksicht auf die Groß-/Kleinschreibung nehmen, ist folgender Befehl einzugeben:

find -iname '*.jpg'

Möchte man ein Kriterium negieren (verneinen), ist es mit einem Ausrufungszeichen anzugeben. Die folgende Anweisung sucht nach Dateien, die nicht dem Benutzer simon gehören:

find ! -user simon

Mehrere Kriterien lassen sich auch verknüpfen. Im folgenden Beispiel werden Dateien gesucht, die größer als 10 MB und kleiner als 20 MB sind:

find -size +10M -size -20M

Man kann auch nach Dateien suchen, die neuer als eine Referenzdatei sind. In Verbindung mit dem Befehl touch kann man so z. B. nach Dateien suchen, die nach 18:00 Uhr erstellt oder verändert wurden:

touch --date='18:00' /tmp/ref
find -newer /tmp/ref

Aktionen

Gefundene Dateien können mit den sogenannten Aktionen weiter verarbeitet werden. Die vermutlich interessanteste ist die Aktion -exec. Hinter dieser Aktion ist das aufzurufende Programm zu notieren. Wenn im Programmaufruf der Dateiname eingefügt werden soll, sind die Zeichen {} zu verwenden. Am Ende des Aufrufes muss ein Semikolon stehen, der bei der Eingabe in der Bash maskiert werden muss. Hier ein Beispiel:

simon@etch:~$ find -size +10M -exec ls -lh {} \;
-rwxr--r-- 1 simon simon 11M 2007-03-15 20:32 ./test.mp3
simon@etch:~$

Das obige Beispiel sucht nach Dateien, die größer als 10 MB sind und zeigt diese mit dem Befehl ls -lh an.

Um alle Bilder, die auf .jpg enden mit tar zu archivieren, ist folgendes einzugeben:

find -iname '*.jpg' -exec tar -rf bilder.tar {} \;

Mit der Option -printf kann man die gefundenen Dateien in eine Datei schreiben lassen. Die angegebene Datei wird entweder überschrieben oder neu angelegt:

find -iname '*.mp3' -fprint playlist.m3u

Datum der Veröffentlichung: Sonntag, 25.03.2007

Nach oben

Diese Seite drucken