Blog

Find lernen - Suche nach Dateien und Verzeichnissen unter Linux/Mac

Dennis Vriend

Aktualisiert Oktober 21, 2025
5 Minuten

Manchmal müssen Sie Dateien und Ordner auf einem Computer finden. Wenn Sie an einem Terminal in einem entfernten System arbeiten, gibt es kein Apple Spotlight, das Ihnen beim Durchsuchen Ihrer Server hilft. Glücklicherweise verfügen sowohl Linux als auch Mac über ein Befehlszeilentool namens 'find', das uns hilft, Dateien und Verzeichnisse zu finden. Es kann sogar Dateien und Verzeichnisse in großen Mengen verarbeiten. Lassen Sie uns heute etwas über 'find' lernen!

Beispiel Verzeichnis

Ich habe ein Beispielverzeichnis vorbereitet, um einige der Suchfunktionen von find zu testen. Klonen Sie einfach das Repository und starten Sie eine Terminalsitzung in diesem Verzeichnis.

Finden Sie

Der Befehl find durchsucht ein bestimmtes Verzeichnis (und seine Unterverzeichnisse) nach Dateien auf der Grundlage einer Vielzahl von Attributen. Wenn wir man find eingeben, lesen wir das Folgende:

NAME
     find -- walk a file hierarchy

SYNOPSIS
     find [-H | -L | -P] [-EXdsx] [-f path] path ... [expression]
     find [-H | -L | -P] [-EXdsx] -f path [path ...] [expression]

content
     The find utility recursively descends the directory tree for each path listed, evaluating an expression (composed of the ``primaries'' and ``operands'' listed below) in terms of each file in the tree.

Alle Dateien und Verzeichnisse suchen

Um nach allen Dateien und Verzeichnissen zu suchen, geben Sie ein:

$ find .
.
./LICENSE
./bin
./bin/hello.sh
./bin/bye.sh
./web
...

Nur Dateien suchen

Um nur nach Dateien zu suchen, geben Sie ein:

$ find . -type f
./LICENSE
./bin/hello.sh
./bin/bye.sh
./web/index.html
...

Nur Verzeichnisse suchen

Um nur nach Verzeichnissen zu suchen, geben Sie ein:

$ find . -type d
.
./bin
./web
./web/img
./java
./test-dir
./.git
...

Eine Datei mit einem bestimmten Namen suchen

So suchen Sie nach einer Datei mit einem Namenstyp:

$ find . -type f -name "test1.txt"
./test-dir/test1.txt

Verwenden Sie einen Platzhalter *, um die Suche zu erweitern:

$ find . -type f -name "test*.txt"
./test-dir/test7.txt
./test-dir/test6.txt
./test-dir/test4.txt
./test-dir/test5.txt
./test-dir/test1.txt
./test-dir/test2.txt
./test-dir/test3.txt
./test-dir/test10.txt
./test-dir/test8.txt
./test-dir/test9.txt

Dateien ohne Berücksichtigung der Groß-/Kleinschreibung suchen

Um nach Dateien ohne Berücksichtigung der Groß-/Kleinschreibung zu suchen, geben Sie ein:

$  find . -type f -iname "test*.txt"
./test-dir/test7.txt
./test-dir/test6.txt
./test-dir/test4.txt
./test-dir/test5.txt
./test-dir/test1.txt
./test-dir/test2.txt
./test-dir/test3.txt
./test-dir/TEST_8.txt
./test-dir/TEST_9.txt
./test-dir/TEST_10.txt
./test-dir/test10.txt
./test-dir/TEST_2.txt
./test-dir/TEST_3.txt
./test-dir/TEST_1.txt
./test-dir/TEST_4.txt
./test-dir/TEST_5.txt
...

Um nach Python-Dateien zu suchen, geben Sie ein:

$ find . -type f -iname "*.py"
./test-dir/test.py

Um nach allen Bilddateien zu suchen, geben Sie ein:

$ find . -type f -iname "*.jpg"
./michael-sum-565770-unsplash.jpg
./jonas-vincent-2717-unsplash.jpg
./web/img/michael-sum-565770-unsplash.jpg
./web/img/jonas-vincent-2717-unsplash.jpg
./web/img/raul-varzar-750436-unsplash.jpg
./web/img/jari-hytonen-538885-unsplash.jpg
./web/img/karina-vorozheeva-666313-unsplash.jpg
./web/img/nathalie-jolie-681356-unsplash.jpg
./web/img/eric-han-455080-unsplash.jpg
./web/img/mikhail-vasilyev-253977-unsplash.jpg
./raul-varzar-750436-unsplash.jpg
./jari-hytonen-538885-unsplash.jpg
./karina-vorozheeva-666313-unsplash.jpg
./nathalie-jolie-681356-unsplash.jpg
./eric-han-455080-unsplash.jpg
./mikhail-vasilyev-253977-unsplash.jpg

Dateien auf Basis der Zeit finden

Um nach Dateien zu suchen, können wir den Befehl mmin, amin, cmin, mtime, atime oder ctime. Das 'cma' bedeutet erstellt, geändert oder zugegriffen. Das 'min' steht für Minuten und das 'time' für Tage. Um nach Dateien zu suchen, die vor weniger als 10 Minuten erstellt wurden, geben Sie ein:

$ find . -type f -ctime -10
./LICENSE
./bin/hello.sh
./bin/bye.sh
./web/index.html
./web/readme.md
...

Um nach Dateien zu suchen, die vor mehr als 10 Tagen geändert wurden, geben Sie ein:

$ find . -type f -mtime +10

Dateien nach Dateigröße suchen

Um nach Dateien über 5 Megabyte zu suchen, geben Sie ein:

$ find . -size +5M
./web/img/jari-hytonen-538885-unsplash.jpg
./.git/objects/f2/d996ce562ad4203c33331f52824fb0e54d050f

Um nach Dateien mit weniger als 1 MB zu suchen, geben Sie ein:

find . -size -1MB
.
./LICENSE
./bin
./bin/hello.sh
./bin/bye.sh
...

Um nach leeren Dateien zu suchen, geben Sie ein:

$ find . -type f -empty
./bin/hello.sh
./bin/bye.sh
./web/readme.md
./java/readme.md
./test-dir/test7.txt
./test-dir/test6.txt
...

Suche nach Zugriffsberechtigungen

Um nach Dateien auf der Basis von Zugriffsrechten zu suchen, geben Sie ein:

$ find . -perm 777
./web/index.html
./web/readme.md
./web/img
./web/img/michael-sum-565770-unsplash.jpg
./web/img/jonas-vincent-2717-unsplash.jpg
./web/img/raul-varzar-750436-unsplash.jpg
./web/img/jari-hytonen-538885-unsplash.jpg
./web/img/karina-vorozheeva-666313-unsplash.jpg
./web/img/nathalie-jolie-681356-unsplash.jpg
./web/img/eric-han-455080-unsplash.jpg
./web/img/mikhail-vasilyev-253977-unsplash.jpg

Ausführen von Befehlen auf das Ergebnis

können wir einen Befehl in Batch auf das Suchergebnis ausführen. Beachten Sie den Teil . Das müssen wir eingeben.

find . -size +5M -exec ls -alh {} +
-r--r--r--  1 dennis  staff   8.8M Nov 19 04:41 ./.git/objects/f2/d996ce562ad4203c33331f52824fb0e54d050f
-rwxrwxrwx@ 1 dennis  staff   8.9M Nov 19 04:33 ./web/img/jari-hytonen-538885-unsplash.jpg

Lassen Sie uns etwas mit den Dateien tun, die die Berechtigung '777' haben. Ändern wir sie in '664':

$ find . -type f -perm 777 -exec chmod 664 {} +
$ find . -type f -perm 664
./web/index.html
./web/readme.md
./web/img/michael-sum-565770-unsplash.jpg
./web/img/jonas-vincent-2717-unsplash.jpg
./web/img/raul-varzar-750436-unsplash.jpg
./web/img/jari-hytonen-538885-unsplash.jpg
./web/img/karina-vorozheeva-666313-unsplash.jpg
./web/img/nathalie-jolie-681356-unsplash.jpg
./web/img/eric-han-455080-unsplash.jpg
./web/img/mikhail-vasilyev-253977-unsplash.jpg

Lassen Sie uns das Verzeichnis mit der Berechtigung '777' in '775' ändern:

$ find . -type d -perm 777
./web/img
$ find . -type d -perm 777 -exec chmod 775 {} +
$ find . -type d -perm 775
./web/img

Tiefe der Suche

Um nur nach Dateien im aktuellen Verzeichnis zu suchen, verwenden Sie die Option 'maxdepth':

$ find . -type f -iname "*.jpg" -maxdepth 1
 ./michael-sum-565770-unsplash.jpg
./jonas-vincent-2717-unsplash.jpg
./raul-varzar-750436-unsplash.jpg
./jari-hytonen-538885-unsplash.jpg
./karina-vorozheeva-666313-unsplash.jpg
./nathalie-jolie-681356-unsplash.jpg
./eric-han-455080-unsplash.jpg
./mikhail-vasilyev-253977-unsplash.jpg

Lassen Sie uns diese Dateien entfernen:

$ find . -type f -iname "*.jpg" -maxdepth 1 -exec rm {} +
$ find . -type f -iname "*.jpg" -maxdepth 1
<empty>

Fazit

Find ist sowohl unter Linux als auch unter Mac verfügbar. Wenn Sie ein paar Optionen kennen, können Sie effektiv nach Verzeichnissen und Dateien suchen. Mit der Option 'exec' können Sie auch mit dem Suchergebnis arbeiten. Wenn Sie Find effektiv einsetzen, können Sie bei Dateioperationen eine Menge Zeit sparen.

Verfasst von

Dennis Vriend

Contact

Let’s discuss how we can support your journey.