zurück

find [pfadangabe] [suchoptionen]

find durchsucht automatisch alle Unterverzeichnisse nach Dateien.

Dabei können verschiedene Suchkriterien (Muster für den Dateinamen, Dateigröße, Datum der Erstellung oder des letzten Zugriffs, etc.) bei der Suche berücksichtigt werden.

Es besteht sogar die Möglichkeit, auf alle Dateien, die diese Bedingungen erfüllen, mit einem anderen Programm (etwa grep) weitere Selektionskriterien anzuwenden.

Auf diese Weise könnten beispielsweise alle *.tex-Dateien gefunden werden, die in den letzten drei Tagen bearbeitet wurden und und den Text (string) "Grafikprogrammierung" enthalten.
Ist das nicht knorke?! :-)
Aber jetzt kommen die (no panic) allgemeinen

Optionen:
-depth
bearbeitet zuerst das aktuelle Verzeichnis, erst dann die Unterverzeichnisse.
-follow
bearbeitet auch Verzeichnisse, die durch symbolische Links erfaßt werden.
-maxdepth n
schränkt die Suche auf n Verzeichnisebenen ein. Mit -maxdepth 1 werden keine Unterverzeichnisse berücksichtigt.
Suchkriterien:
Anmerkung:
Es können mehrere Suchkriterien gleichzeitig genannt werden. Diese Kriterien werden logisch mit UND verknüpft. Die Suche wird abgebrochen, sobald das erste Kriterium nicht erfüllt ist.
\ (und \)
gruppiert Kriterien
!
negiert Kriterien
-o
verknüpft mit logischem ODER
-ctime n
findet Dateien, die zuletzt vor genau n Tagen verändert wurden. Wenn vor der Zahl ein + angegeben wird, dann werden alle Dateien erfaßt, die älter als n Tage sind. Ein vorangestelltes - liefert Dateien, die jünger als n Tage sind.
-group gruppenname
findet Dateien der angebebenen Gruppe
-nogroup gruppenname
negiert group
-name suchmuster
findet Dateien, die dem angebebenen Suchmuster entsprechen. Wenn das Suchmuster Jokerzeichen enthält, muß es in Apostrophe gestellt werden.
-path suchmuster
findet Dateien, die dem angebebenen Suchmuster entsprechen.
-perm zugriffsbits
findet Dateien, deren Zugriffsbits genau dem angegebenen Oktalwert entsprechen.
-size dateigröße
gibt die gewünschte Dateigröße vor. Die Angabe erfolgt in Vielfachen von 512, d.h. 1 = 0-511, 2 = 512-1023, etc. oder mit vorangestelltem + bzw. - die absolute Zahl mit nachgestelltem c für bytes bzw. k für KB. -size -1000k liefert daher alle Dateien, die kleiner sind als 1MB.
-type zeichen
schränkt die Suche auf bestimmte Dateitypen ein. Die wichtigsten Zeichen sind:
f   reguläre Dateien
d   Verzeichnisse
l   symbolische Links.
-user username
findet Dateien des angegebenen Benutzers
-nouser username
negiert user

Aktionen beim Finden einer Datei:
-exec kommando [optionen] {} \;
ruft das angegebene Kommando und übergibt den Dateinamen der gefundenen Datei, die alle bisher verarbeiteten Kriterien erfüllt hat. {} ist Platzhalter für den Dateinamen, \; schließt den Kommandoaufruf ab. Es können weitere folgen.
-print
Ausgabe am Bildschirm (Standardeinstellung).
-printf format
siehe man-Seiten

Anmerkung:
find ist ein vergleichsweise langsames Kommando, besonders dann, wenn der gesamte Dateibaum durchsucht werden muß.
Oft kommen Sie mit den Kommandos locate, whereis, oder which in viel kürzerer Zeit auch zum Ergebnis (siehe dort).
Bsp:
find
liefert eine Lister aller(!) Dateien.
find -name ".e*"
zeigt alle Dateien die mit .e beginnen.
find / -path "*latex/*.tex"
findet alle *.tex-Dateien in einem Verzeichnis, daß auf latex endet.
find /home -group users -ctime -5
findet alle Dateien in den (Unter)Verzeichnissen von home, die zur Gruppe users gehören und in den letzten 5 Tagen verändert wurden.
find / -size -10k -exec grep -q emacs {} \; -print > ergebnis
findet alle Dateien kleiner als 10 KB und sucht darin die Zeichenfolge emacs. Die Liste der gefundenen Datein wird in der Datei ergebnis gespeichert.

zurück