Der Befehl find durchläuft einen Verzeichnisbaum und prüft jeden Eintrag anhand von Kriterien wie Name, Typ, Größe oder Änderungszeit.
Befehlszeile · Lektion 14
find
Lerne, Verzeichnisbäume nach Name, Typ, Größe und Zeit zu durchsuchen und auf geprüfte Treffer einzuwirken.
Den Suchort festlegen
Die grundlegende Syntax lautet:
find [PATH] [EXPRESSION]
Der Pfad legt den Startpunkt fest; der Ausdruck wählt darunterliegende Einträge aus oder führt Aktionen auf ihnen aus.
Dieser Befehl durchsucht /home und alle Nachkommen nach Einträgen namens puppies.jpg:
$ find /home -name puppies.jpg
Die Suche ist standardmäßig rekursiv. Verwende . als Startpfad, um den aktuellen Verzeichnisbaum zu durchsuchen.
Welcher Befehl durchsucht das aktuelle Verzeichnis und seine Nachkommen nach Einträgen namens notes.txt?
Namen und Typen abgleichen
Der Test -name akzeptiert einen genauen Basisnamen oder ein Shell-ähnliches Muster. Setze Platzhaltermuster in Anführungszeichen, damit die aktuelle Shell sie unverändert an find übergibt:
$ find . -name "*.txt"
Ohne Anführungszeichen kann die Shell *.txt bereits im aktuellen Verzeichnis erweitern, bevor find startet. Verwende -iname statt -name, wenn beim Namensvergleich die Groß- und Kleinschreibung ignoriert werden soll.
Mit -type d wählst du Verzeichnisse, mit -type f reguläre Dateien aus:
$ find /home -type d -name MyFolder
Hier müssen beide Tests zutreffen: Der Eintrag muss ein Verzeichnis sein und sein Basisname muss MyFolder lauten.
Welcher Befehl findet unterhalb des aktuellen Verzeichnisses reguläre Dateien, deren Namen auf .txt enden?
Größe und Änderungszeit abgleichen
Bei -size steht + für größer und - für kleiner als die angegebene Einheit:
$ find . -type f -size +10M
$ find . -type f -size -1k
Das große M steht hier für Einheiten von 1.048.576 Byte, das kleine k für Einheiten von 1.024 Byte. find rundet Größen vor dem numerischen Vergleich auf die gewählte Einheit auf; das Verhalten an Grenzen richtet sich daher nach diesen Einheiten.
Mit -mtime prüfst du die Anzahl vollständiger 24-Stunden-Zeiträume seit der letzten Dateiänderung:
$ find . -type f -mtime -7
$ find . -type f -mtime +30
-mtime -7 entspricht einem Wert unter 7, -mtime +30 einem Wert über 30. Da vollständige 24-Stunden-Zeiträume zählen, orientieren sich diese Tests nicht an Kalendertagen um Mitternacht.
Welcher Befehl findet unterhalb von . reguläre Dateien, deren Änderungsalter weniger als sieben vollständige 24-Stunden-Zeiträume beträgt?
Treffer ausgeben und verarbeiten
Wird keine Aktion angegeben, gibt GNU find die passenden Pfade aus. Mit einem ausdrücklichen -print machst du die Aktion des Ausdrucks deutlich:
Treffer ausdrücklich ausgeben:
$ find . -name "*.log" -print
Mit -exec führst du einen anderen Befehl für Treffer aus:
$ find . -name "*.log" -exec ls -l {} \;
Bei der Form mit \; wird {} in jedem Befehlsaufruf durch einen passenden Pfad ersetzt. Das Semikolon beendet die -exec-Aktion und ist maskiert, damit die Shell es an find weitergibt.
Bevor du eine destruktive Aktion wie -delete oder einen dateiverändernden -exec-Befehl verwendest, führe dieselben Tests mit -print aus und prüfe jedes Ergebnis. Ein engerer Startpfad und -maxdepth N können die Suche zusätzlich begrenzen.
Du entwickelst einen find-Befehl, der später alte .log-Dateien löschen soll. Was solltest du zuerst tun?
Wofür steht {} in find . -name "*.log" -exec ls -l {} \;?
Meldungen wie „Permission denied“ bedeuten meist, dass das aktuelle Konto einen Teil des Baums nicht durchsuchen darf. Bevorzuge einen engeren, relevanten Startpfad und verwende erhöhte Rechte erst, wenn du den erweiterten Zugriff verstehst und bewusst beabsichtigst.
Mit diesen praktischen Übungen kannst du gezielte Suchausdrücke aufbauen:
- Linux find Command: File Searching – Lerne den vielseitigen Befehl
findkennen und nutzefind, um Dateien sowie Verzeichnisse anhand verschiedener Kriterien zu suchen. - Discover Critical System Resources – Nutze unter anderem
find, um Dateien und ausführbare Programme zu lokalisieren und wichtige Systemressourcen zu entdecken.
Lektion abgeschlossen
Sie haben find abgeschlossen
Du kannst nun gezielte find-Ausdrücke erstellen und Ergebnisse prüfen, bevor du auf sie einwirkst.
Wähle den engsten sinnvollen Startpfad.
Schütze Namensmuster mit Anführungszeichen und kombiniere sie mit Typtests.
Filtere nach Größe oder vollständigen 24-Stunden-Änderungszeiträumen.
Begrenze bei Bedarf die Rekursionstiefe.
Gib Treffer aus und prüfe sie vor destruktiven Aktionen.
Lernfortschritt speichern
Erstellen Sie ein kostenloses Konto, um diese Lektion zu speichern und auf jedem Gerät weiterzulernen.
Kostenloses Konto erstellen