Solaris Handbuch für Fortgeschrittene Benutzer

3.6 Dateien suchen (find)

Mit dem Befehl find können Sie in einem Verzeichnis und allen darin enthaltenen Unterverzeichnissen nach Dateien suchen, die bestimmte Kriterien erfüllen. Das könnten beispielsweise Dateien sein, deren Namen eine bestimmte Zeichenfolge enthalten oder die innerhalb eines bestimmten Zeitraums bearbeitet wurden.

Im Gegensatz zu den meisten anderen Befehlen muß bei find der Verzeichnisname vor den Befehlsoptionen stehen:

$ find verzeichnis optionen

verzeichnis ist der Name des Verzeichnisses, in dem gesucht werden soll. optionen wird durch eine oder mehrere Befehlsoptionen ersetzt, die bei diesem Befehl ausnahmsweise mehrere Zeichen lang sind.

Jede Option beschreibt ein Auswahlkriterium. Damit eine Datei in die Liste der gefundenen Dateien aufgenommen wird, muß sie alle Kriterien erfüllen. Je mehr Kriterien Sie also angeben, desto enger wird das Feld der Dateien, auf die Ihre Beschreibung zutrifft. Mit der Option -print legen Sie fest, daß die Ergebnisse auf dem Bildschirm angezeigt werden sollen. (Dies muß explizit angegeben werden, weil Sie mit find auch andere Befehle ausführen lassen können und die Ausgabe in diesem Fall häufig überflüssig ist.)

Mit der Option -name dateiname suchen Sie nach allen Dateien mit der Zeichenfolge dateiname als letztem Element im Pfadnamen. Das letzte Element im Pfadnamen der Datei /usr/lib/calendar ist beispielsweise calendar. Dieser Teil des Pfadnamens wird auch als Basisname bezeichnet.

Im folgenden Beispiel zeigen Sie alle Dateien und Verzeichnisse im aktuellen Verzeichnis an, deren Namen mit dem Buchstaben s" enden:

$ find . -name '*s' -print

./programs

./programs/graphics

./programs/graphics/gks

./src/gks

$

Wenn Sie in dateiname ein Metazeichen verwenden, muß die Zeichenfolge in einfache Anführungszeichen gesetzt werden.

Weitere Optionen:

-user benutzer_id

Sucht nach allen Dateien, die einem bestimmten Benutzer gehören. Ersetzen Sie benutzer_id durch den Login-Namen oder die Benutzernummer.

-group gruppe

Sucht nach allen Dateien, die der angegebenen Benutzergruppe gehören.

-m time n

Sucht nach allen Dateien, die innerhalb der letzten n Tage geändert wurden.

-newer ref_datei

Sucht nach allen Dateien, die nach ref_datei geändert wurden.

Wenn Sie die Suchkriterien nach Priorität ordnen wollen, können Sie sie im Format \(optionen \) eingeben. Innerhalb der Klammern können Sie dann die Option -o verwenden. Steht diese Option zwischen zwei Kriterien, werden auch Dateien ausgewählt, die nur eine der beiden Kriterien erfüllen:

$ find . \( -name AAA -o -name BBB \) -print

./AAA

./BBB

Soll nach allen Dateien gesucht werden, die den angegebenen Kriterien nicht entsprechen, stellen Sie den Optionen die Zeichenfolge \! voran:

$ find . \!-name BBB -print

./AAA

Mit folgender Option können Sie außerdem festlegen, daß auf die gefundenen Dateien ein Befehl angewendet werden soll:

-exec befehl '{}' \;

Die in Anführungszeichen stehenden geschweiften Klammern stehen dabei für die von find ausgewählten Dateien.

Mit dieser Methode können Sie beispielsweise Arbeitsdateien, die nur vorübergehend benötigt werden, automatisch löschen lassen. Voraussetzung ist, daß Sie solchen Dateien immer die gleichen Namen zuweisen. Mit dem folgenden Befehl werden beispielsweise alle Dateien ausgewählt und gelöscht, die temp oder dummy heißen:

$ find . \( -name temp -o -name dummy \) -exec rm '{}' \;

Weitere Informationen zu find(1) finden Sie in den man Pages(1): User Commands