find: Spickzettel für die richtige Syntax der Suche

Viktor Dite, Autor des Beitrags

Von - Publiziert in Linux
Dipl. Informatiker und Tech-Blogger seit 2006.


Mit find kannst Du auf allen Unix basierenden Systemen nach Dateien suchen – also auch unter Linux und Mac OS. Hier findest Du einen Spickzettel für die richtige Syntax der Suche. Ich vergesse auch immer wieder die korrekte Schreibweise, also teile ich meinen Spickzettel mit Dir.

So suchst Du mit find

find / -type f -name "filename"

Der Befehl find sucht in Unixbasierten Systemen nach Dateien.

‚/‘ bedeutet in diesem Fall das root Verzeichnis, dh. es werden alle Unterverzeichnisse auf der Platte durchsucht.
‚-type f‘ findet nur reguläre Dateien. Verzeichnisse, Sockets, etc. werden ausgelassen.
‚-name‘ steht für den Namen der Datei, die gefunden werden soll. Dabei ist es möglich nur Teile des Namens einzugeben.

Im aktuellen Verzeichnis suchen

Wenn Due nur im aktuellen Verzeichnis und allen Unterverzeichnissen suchen möchtest, dann ersetzt Du das „/“ gegen „.“, also wie folgt:

find . -type f -name "filename"

find alle JPEG Bilder suchen

find . -type f -name "*.jpg"

Sucht im aktuellen Verzeichnis und allen Unterverzeichnissen nach .jpg Bildern

find alle Mimetype „Bilder“ suchen

Findet alle Dateien des Typs Bild – egal welcher Endung

find . -type f -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image'

Beispiel der Ausgabe:

find Ergebnis in eine Datei schreiben

Am ersten Beispiel wäre das:

find . -type f -name "*.jpg" > liste-von-jpgs.txt

Am zweiten Beispiel:

find . -type f -name '*' -exec file {} \; | grep -o -P '^.+: \w+ image' > liste-von-jpgs.txt

find sucht nicht rekursiv

Wenn find nicht rekursiv in allen Unterverzeichnissen sucht, dann hast Du beim -name Parameter die Quotes “ vergessen:

falsch:

find . -type f -name filename.jpg

richtig

find . -type f -name "filename.jpg"

Dann sucht find auch wieder rekursiv in allen Unterverzeichnissen eines Pfades


Letzte Änderung: