find
100%

Befehlszeile · Lektion 14

find

Lerne, Verzeichnisbäume nach Name, Typ, Größe und Zeit zu durchsuchen und auf geprüfte Treffer einzuwirken.

Der Befehl find durchläuft einen Verzeichnisbaum und prüft jeden Eintrag anhand von Kriterien wie Name, Typ, Größe oder Änderungszeit.

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:

  1. Linux find Command: File Searching – Lerne den vielseitigen Befehl find kennen und nutze find, um Dateien sowie Verzeichnisse anhand verschiedener Kriterien zu suchen.
  2. 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
Nächste Lektion
Zurück zu Befehlszeile