| find - Dateien und Verzeichnisse suchen | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
Syntax: find <Pfad>... -[<Ausdruck>...]
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Die Optionen dieses Befehls werden in zwei Gruppen unterteilt: |
|
|---|---|
Wirkung |
beeinflussen die Bearbeitungsweise der Datei- und Verzeichniseinträge. |
| Optionen mit lokaler Wirkung | werden auf den jeweils aktuellen (sich im Test befindlichen Eintrag) angewendet und liefern hierbei einen Rückgabewert, der (evtl. durch Verknüpfung mit anderen) das Ausführen einer Aktion bewirkt oder unterbindet. |
Weiterhin stellt find eine Vielzahl von Ausgabeformatierungen unter Verwendung der Funktion printf (der Voreinstellung) zur Verfügung. Somit ist es leicht, Verzeichnislisten beliebigen Formates anzulegen.
Darüberhinaus kann find mit den gefundenen Dateien/Verzeichnissen bestimmte Aktionen ausführen, auf Wunsch auch interaktiv.
Voreingestellungsgemäß folgt find keinen Links. Die Aktionen beginnen im aktuellen Verzeichnis, sofern kein Pfad angegeben wurde.
| -daystart | mit den Optionen -atime, -amin, -ctime, -cmin, -mtime und -mmin werden Zeiten vom Beginn des Tages an berechnet und nicht bezogen auf die letzten 24 Stunden. |
| -depth | (Tiefe) Der Inhalt des Verzeichnisses wird vor dem Verzeichniseintrag selbst bearbeitet. |
| -follow | (verfolgen) Symbolische Links werden verfolgt. Implizit wird dabei die Option -noleaf ausgeführt. Das voreingestellte Verhalten von find überspringt Links auf Verzeichnisse. |
| -maxdepth <Tiefe> | Unterverzeichnisse werden nur bis zur mit "<Tiefe>" - eine nichtnegative Ganzzahl - angegebenen Ebene bearbeitet und nicht (wie voreingestellt) alle Ebenen. Der Eintrag "0" Bewirkt hier, dass nur die in der Kommandozeile übergebenen Dateien und Verzeichnisse bearbeitet werden. |
| -mindepth <Tiefe> | Unterverzeichnisse werden nur ab der mit "<Tiefe>" - eine nichtnegative Ganzzahl - angegebenen Ebene bearbeitet, bezogen auf das aktuelle Verzeichnis. |
| -noleaf | erzwingt die Bearbeitung aller Einträge (einschließlich >>.<< und >>..<<. Diese Option wird im Zusammenhang mit nicht-*nix-kompatiblen Filesystemen angewendet. |
| -mount, -xdev |
Es wird nur auf dem Filesystem (Datenträger gesucht, auf dem das erste spezifizierte Verzeichnis liegt. |
| -version | Programmversion |
|
Zeitkritische Tests: |
|||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| -amin <Zeit> | Auf den Eintrag wurde vor <Zeit> Minuten zugegriffen. | ||||||||||||||||
| -anewer <Datei> | Auf den Eintrag wurde vor weniger Zeit als auf <Datei> zugegriffen. Die ggf. mit angegebene Option -follow muss nach -anewer angegeben werden, damit -anewer Wirkung zeigt. |
||||||||||||||||
| -atime <Zeit> | Vor <Zeit> Tagen wurde auf die Datei zugegriffen. | ||||||||||||||||
| -ctime <Zeit> | Der Dateistatus wurde vor <Zeit> geändert. | ||||||||||||||||
| -cnewer <Datei> | Der Status des Eintrags wurde vor weniger Zeit geändert als der von <Datei>. Die ggf. mit angegebene Option -follow muss vor -cnewer angegeben werden, damit -cnewer Wirkung zeigt. |
||||||||||||||||
| -ctime <Zeit> | Die Statusänderung erfolgte vor <Zeit> Stunden. | ||||||||||||||||
| -mmin <Zeit> | Der Eintrag wurde vor <Zeit> Minuten das letzte mal verändert. | ||||||||||||||||
| -mtime <Zeit> | Der Eintrag wurde vor <Zeit> Tagen das letzte mal geändert. | ||||||||||||||||
| -never <Datei> | Der Eintrag ist vor weniger Zeit als <Datei> verändert worden.
Die ggf. mit angegebene Option -follow muss vor -never angegeben werden, damit -newer Wirkung zeigt. |
||||||||||||||||
| Typspezifische Tests: | |||||||||||||||||
| -fstype <Typ> | Der Eintrag befindet sich auf einem Datenträger mit dem Filesystem <Typ>. Folgende Werte können ua. angegeben werden: minix, msdos, ext (2), proc, hpfs. Durch die Option -printf %F kann der <Typ> dargestellt werden. |
||||||||||||||||
| -type <Typ> | Der Eintrag ist vom Typ <Typ>. Folgende Angaben sind möglich:
|
||||||||||||||||
|
Tests für Zugriffsrechte: |
|
|---|---|
| -gid <Zahl> | Der Eintrag gehört zur Gruppe mit der GID <Zahl>. |
| -group <Name> | Der Eintrag gehört zur Gruppe mit dem Namen <Name>. Es kann auch eine GID angegeben werden. |
| -nouser | Der Eigentümer ist dem System nicht bekannt (er ist nicht in der /etc/passwd eingetragen). |
| -nogroup | Die Gruppe ist dem System nicht bekannt (sie ist nicht in der /etc/passwd eingetragen). |
| -uid <Nummer> | Der Eintrag gehört dem Anwender mit der UID <Nummer>. |
| -used <Zeit> | Auf den Eintrag ist vor <Zeit> Tagen nach der letzten Änderung zugegriffen worden. |
| -user <Name> | Der Eintrag gehört <Name>. Es kann auch eine UID angegeben werden. |
| -xtype <Typ> | Vgl -type. Einträge, die keine Links bezeichnen und vom Typ <Typ> sind. <Typ> wird unter -type aufgeführt. |
| -perm <Modus> | Die Zugriffsrechte entsprechen <Modus>. |
|
Andere Tests: |
|
| -inum <Zahl> | Der Eintrag hat die I-Node <Zahl>. |
| -link <Zahl> | Der Eintrag hat <Zahl> harte Links. |
| -lname <Muster> | Der Eintrage bezeichnet einen Link auf einen Eintrag, der <Muster> entspricht. |
| -name <Muster> | Der Eintrage entspricht dem <Muster>. Metazeichen müssen maskiert werden. |
| -iname <Name> | (ignore case name) Variante zu -name, die nicht zwischen Gross- und Kleinschreibung unterscheidet. |
| -path <Muster> | Der Pfad entspricht dem <Muster>. Metazeichen müssen maskiert werden. |
| -ipath <Name> | (ignore case path) Variante zu -path, die nicht zwischen Gross- und Kleinschreibung unterscheidet. |
| -regex <regulärer Ausdruck> | Der Eintrag entspricht <regulärem Ausdruck>. |
| -size <Anzahl> [b|c|k|w] | Der Eintrag belegt <Anzahl> Blöcke (Voreinstellung). b spezifiziert als Einheit Bytes, w 2-Byte-Worte (words). c legt je Block 512 Bytes zugrunde, k 1025 Bytes. |
| -empty | liefert wahr, wenn die (reguläre) Datei oder das Verzeichnis leer sind. |
| -true | liefert immer true. |
| -false | liefert immer false. |
|
Ausgabeoptionen: |
|
| Der relative Pfadname wird an die Standardausgabe weitergegeben. Voreinstellung ist Action. | |
| -print0 | Der relative Pfadname wird an die Standardausgabe weitergegeben, gefolgt von einem Nullbyte. Dadurch ist es möglich, auch Pfadnamen zu verarbeiten, die ein LF-(Zeilenende)Zeichen enthalten. |
| -printf <Format> | gibt die formatierte Ausgabe für die Einträge an die Standardausgabe weiter. |
| -fprint <Datei> | Schreibt den Pfadnamen in die Datei <Datei>. Diese wird erzeugt, faslls sie noch nicht vorhanden ist, ansonsten wird die Ausgabe angehängt. Standardausgabe und Standardfehlerausgabe können durch /dev/stdout bzw. /dev/stderr direkt angesprochen werden. |
| -fprint0 <Datei> | wie -fprint mit einem abschließenden Nullbyte. |
| -fprintf <Datei> | kombiniert -fprint und -printf, so dass die formatierte Ausgabe in eine Datei geschrieben wird. |
| -fls0 <Datei> | die Kombination von -ls und fprint. |
| -exec <Befehle>\; | <Befehle> werden für die Einträge ausgeführt, bei denen der Test true lieferte. |
| -ok <Befehle>\; | vor dem Ausführen von <Befehle> wird eine Bestätigung verlangt. |
Die ausgeführten Aktionen werden durch Ausdrücke gesteuert. Diese setzen sich aus Optionen zusammen, die entweder Tests sind oder Verknüpfungen darstellen.