Mit find
kann schnell und einfach nach Dateien und Ordners auf der Festplatte suchen.
Ruft man find
ohne Verzeichnisangabe auf, wird der aktuelle Ordner durchsucht.
Suche nach bestimmten Dateiendungen
Der folgende Befehl findet z.B. alle Dateien die mit .png enden. Auf Groß-/Kleinschreibung wird nicht geachtet, so das auch Dateien mit der Endung .PNG gefunden werden.
1 |
find -iname '*.png' |
Möchte man das Ergebnis umkehren (negieren), so muss man nur ein ! mit angeben. Der folgende Befehl zeigt z.B. alle Dateien, die keine jpg Endung haben.
1 |
find ! -iname '*.png' |
Mehrere Bedingungen kann man auch verknüpfen. Man kann z.B. Dateien mit einer bestimmten Größe finden. Als Beispiel hier alle Dateien größer 100 MB und kleiner 150 MB.
1 |
find -size +100M -size -150M |
Will man z.B. Nach ein bestimmten Typ suchen wie z.B: Ordner oder Dateien kann man die option -type
verwenden. Um ausschließlich nur Verzeichnisse im Ergebnis zu haben muss man z.B. -type d
angeben. Das folgende Beispiel findet z.B. alle Ordner mit thumb im Namen innerhalb des Verzeichnisses images/.
1 |
find images/ -type d -iname '*tn*' |
f = regular file
d = directory
s = socket
D = door (Solaris)
b = block (buffered) special
c = character (unbuffered) special
p = named pipe (FIFO)
l = symbolic link; this is never true if the -L option or the -follow option is in effect, unless the symbolic link is broken. If you want to search for symbolic links when -L is in effect, use -xtype.
Leider erlaubt die Option -iname
keine Slashes bei der Angabe. Will man z.B. bestimmte pfadteile finden, wie images/*/thumbs
muss man grob suchen und dann das Ergebnis mit grep
einschränken.
Will man z.B. Dateien finden, die älter als 30 Tage sind, so kann man das mit der Option -mtime oder -ctime tun. Das + vor der Zahl steht steht dabei für ‚älter als‘ .
1 |
find cache/ -type f -mtime +10 -exec rm {} \; |
Die Zeitangabe ist hier immer in Tagen. Will man kleinere Zeiteinheiten als ein Tag benutzen, so kann man dies mit -mmin oder -cmin tun.
Aktionen
Mit den Aktionen kann das Ergebnis weiterverarbeitet werden.
Weiterverarbeitung des Ergebnisses
Wenn man z.B. nur die Dateimenge zählen will kann man das Ergebnisses mit der Pipe | an das Programm wc übergeben welches dann die gefundenen Zeilen zählt.
1 2 3 4 5 |
# Menge der Dateien im Verzeichnis und den Unterverzeichnisse zählen find [VERZEICHNIS] -type f | wc -l # Ausgabe z.B. 3252 |