find(1)Handbuchseitefind(1)

Bezeichnung: find – sucht nach bestimmten Dateien

Syntax: von find

find [Verzeichnis] [-Option…] [-Test…] [-Aktion…]

Beschreibung:

find durchsucht eine oder mehrere Verzeichnishierarchien nach Dateien mit bestimmten Eigenschaften, und führt damit bestimmte Aktionen aus. Die Eigenschaften können durch Tests bestimmt werden.

Optionen, Tests und Aktionen können mit Operatoren zusammengefasst werden. find bewertet für jede Datei in den Verzeichnishierarchien die Optionen, Tests und Aktionen von links nach rechts, bis ein falscher Wahrheitswert auftaucht oder die Kommandozeilenargumente zu Ende sind.

Das erste Argument, das mit einem -, einer Klammer (, ), einem Komma , oder einem Ausrufezeichen ! beginnt, wird als Anfang einer Option oder Test interpretiert. Alle Argumente davor werden als Verzeichnisnamen interpretiert.

Wenn kein Verzeichnis angegeben ist, wird das aktuelle Verzeichnis genommen. Wenn keine Aktion angegeben ist, wird die Aktion -print ausgeführt.

Der Rückgabewert von find ist Null, wenn alle Aktionen erfolgreich waren, im Fehlerfall ist er größer als Null.

Optionen von find:

Die Optionen bestimmen das allgemeine Verhalten des Kommandos, und beziehen sich nicht auf spezielle Dateien. Die Optionen sind immer wahr.

-daystart mißt die Zeiten für die -amin, -atime, -cmin, -ctime, -mmin und -mtime Eigenschaften vom Beginn des aktuellen Tages anstelle der letzten 24 Stunden

-depth bearbeitet den Inhalt jedes Verzeichnisses vor dem Verzeichnis selbst

-follow folgt den symbolischen Links; diese Option schließt -noleaf mit ein

-maxdepthEbenen steigt bis zu der gegebenen Zahl von Ebenen im Verzeichnisbaum auf (in der Hierarchie ab); bei 0 Ebenen werden die Tests nur auf die in der Komman­ dozeile übergebenen Dateien und Verzeichnisnamen angewendet

-mindepthEbenen steigt mindestens die gegebene Zahl von Ebenen im Verzeichnisbaum auf (in der Hierarchie ab); bei einer Ebene werden die in der Kommandozeile genannten Dateien und Verzeichnisnamen nicht bearbeitet

-noleaf erzwingt die Bearbeitung aller Verzeichniseinträge; normalerweise kann davon ausgegangen werden, daß jedes Linuxverzeichnis wenigstens zwei (harte) Links enthält: das Verzeichnis . ist ein Link auf das Verzeichnis selbst, und jedes Unterverzeichnis enthält den Eintrag .. als Link auf das Oberverzeichnis; wenn find bei der Untersuchung eines Verzeichnisses zwei Unterverzeichnisse weniger untersucht hat, als das Verzeichnis Links zählt, kann deshalb normalerweise die weitere Suche beendet werden

-version gibt die Versionsnummer auf die Standardfehlerausgabe

-xdev durchsucht keine Verzeichnisse in anderen Dateisystemem (auf anderen Partitionen)

Tests: Alle numerischen Argumente können auf drei Arten angegeben werden:

+N   steht für alle Zahlen größer als N
Nsteht für alle Zahlen kleiner als N
Nsteht für genau N

Alle Tests werden auf die Dateien in den angegebenen Verzeichnissen einzeln angewendet. Die Tests liefern einen Wahrheitswert von 0 (Wahr), wenn der Test erfolgreich war.

-amin N auf die Datei ist vor N Minuten zugegriffen worden

-anewer Referenzdatei auf die Datei ist vor weniger Zeit zugegriffen worden, als seit der letzten Veränderung der Referenzdatei vergangen ist; im Zusammenhang mit -follow tritt -anewer nur in Effekt, wenn -follow vor -anewer in der Kommandozeile steht

-atime N auf die Datei ist vor N*24 Stunden zugegriffen worden

-cmin N der Status der Datei wurde vor N Minuten geändert

-cnewer Referenzdatei der Status der Datei wurde vor weniger Zeit verändert, als seit der letzten Veränderung der Referenzdatei vergangen ist; zusammen mit -follow tritt -cnewer nur in Effekt, wenn -follow vor -cnewer in der Kommandozeile steht

-ctime N der Dateistatus wurde vor N*24 Stunden geändert -empty die reguläre Datei oder das Verzeichnis ist leer -false ist immer falsch

-gid N die Datei gehört der Gruppe mit der GID N

-group Name die Datei gehört der Gruppe Name

-inum N die Datei belegt die Inode mit der Nummer N

-links N die Datei hat N (harte) Links

-lname Muster die Datei ist ein symbolischer Link auf eine Datei oder ein Verzeichnis mit einem zum Muster passenden Namen

-mmin N der Inhalt der Datei wurde vor N Minuten verändert

-mtime N der Inhalt der Datei wurde vor N*24 Stunden verändert

-name Muster der Name der Datei passt zu dem Muster

-newer Referenzdatei die Datei ist später verändert worden als die Referenzdatei; zusammen mit -follow tritt -newer nur in Effekt, wenn -follow vor -newer in der Kommandozeile steht

-nouser die Datei gehört keinem im System eingetragenen Benutzer

-nogroup die Datei gehört keiner im System angemeldeten Gruppe

-path Muster der Pfadname der Datei passt zum Muster

-perm Modus die Zugriffsrechte auf die Datei entprechen exakt dem Modus; der Modus kann als Oktalzahl oder mit den bei chmod(1) beschriebenen Kennungen beschrieben werden, die Kennungen werden auf Modus 000 bezogen

-permModus (mindestens) die Zugriffsrechte für den Modus sind gesetzt

-perm +Modus die Zugriffsrechte entsprechen höchstens dem Modus (oder sind weiter eingeschränkt)

-size N[ck] die Datei belegt N Datenblöcke zu 512 Bytes, bzw. N Bytes und N Kilobytes mit nachgestelltem c oder k

-true ist immer wahr

-typeC die Datei ist vom Typ C; folgende Typen werden unterschieden:

b    gepufferte Gerätedatei für ein blockorientiertes Gerät
cungepufferte Gerätedatei für ein zeichenorientiertes Gerät
dVerzeichnis
pNamed Pipe
fnormale Datei
lsymbolischer Link
sSocket

-uid N die UserID des Eigentümers ist N

-used N auf die Datei ist N Tage nach der letzten Änderung zugegriffen worden

-user Name die Datei gehört dem Anwender Name

-xtype C das gleiche wie -type für alle Dateien, die keine symbolischen Links sind; wenn die Datei ein symbolischer Link ist und die Option -follow nicht gesetzt ist, wird die Datei, auf die der Link zeigt, auf den Typ C geprüft; wenn die Option -follow gesetzt ist, ist der Test wahr, wenn C = l ist

Aktionen:

-exec Kommando; führt das Kommando aus; die Aktion ist wahr, wenn das Kommando einen Status von Null liefert; alle auf den Kommandonamen folgenden Argumente bis zu einem Semikolon ; werden als Kommandozeilenargumente für das Kommando interpretiert; das Semikolon kann nicht weggelassen werden, und es muß durch mindestens ein Whitespace von der letzten Option getrennt werden; die Konstruktion {} wird durch den Pfadnamen der Datei ersetzt; die Klammern und das Semikolon müssen in der Kommandozeile für find quotiert werden, damit sie nicht von der Shell bearbeitet werden

-fprint Ausgabedatei schreibt den Pfadnamen der getesteten Datei in die Ausgabedatei; wenn die Ausgabedatei nicht existiert, wird sie erzeugt, sonst wird sie erweitert; die Standardausgabe und die Standardfehlerausgabe werden als /dev/stdout und /dev/stderr angesprochen

-fprintf Ausgabedatei Format schreibt den Namen der getesteten Datei in die Ausgabedatei und benutzt dabei das Format mit Sonderzeichen wie bei printf

-ok Kommando; wie -exec, vor der Ausführung des Kommandos wird aber noch eine Bestätigung erwartet; nur eine Eingabe, die mit einem Y oder einem y beginnt, führt zur Ausführung des Kommandos

-print gibt den vollständigen Pfadnamen der getesteten Datei auf die Standardausgabe

-printf Format gibt für die getestete Datei die Zeichenkette Format auf der Standardausgabe aus; Format kann verschiedene Sonderzeichen und Platzhalter enthalten, die von find bearbeitet werden:

\a    Alarmton
\bRückschritt
\cAbbruch der Ausgabe
\fSeitenvorschub
\nZeilenvorschub
\rWagenrücklauf
\thorizontaler Tabulator
\vvertikaler Tabulator
\\der Backslash selbst
printf Format

ein Backslash gefolgt von irgendeinem anderen Zeichen wird als normales Zeichen interpretiert und einfach ausgegeben

%%    das Prozentzeichen selbst
%adie Zeit des letzten Zugriffs auf die Datei, in dem Format der ctime Funktion
%Akdie Zeit des letzten Zugriffs auf die Datei, in dem von k bestimmte Format; k hat dabei das gleiche Format wie der entprechende Parameter der strftime Funktion in C: @     Sekunden seit dem 1.1.1970 0 Uhr GMT H Stunde (00 bis 23) I Stunde (01 bis 12) k Stunde (0 bis 23) l Stunde (1 bis 12) M Minute (00 bis 59) p PM oder AM r Zeit, 12 Stunden (hh:mm:ss: AM/PM) S Sekunden (00 bis 61) T Zeit, 24 Stunden (hh:mm:ss) X Zeit (H:M:S) Z Zeitzone, oder nichts a abgekürzter Wochentag A ausgeschriebener Wochentag b abgekürzter Monatsname B ausgeschriebener Monatsname c Datum und Zeit d Tag im Monat D Datum (mm/dd/yy) h das gleiche wie b j der Tag im Jahr m die Zahl des Monats U die Nummer der Woche, Sonntag als erster Wochentag w die Zahl des Wochentag W die Nummer der Woche, Montag als erster Wochentag x Datum (mm/dd/yy) y die letzten beiden Stellen der Jahreszahl Y die Jahreszahl
%bdie Dateigröße in 512 Byte Blöcken (aufgerundet)
%cdas Datum der letzten Statusänderung im Format der C ctime Funktion
%Ckdas Datum der letzten Statusänderung im Format der strftime Funktion; Parameter wie oben
%ddie Höhe der Datei im Verzeichnisbaum; Null bedeutet, daß die Datei Kommandozeilenargu­ ment ist
%fder Name der getesteten Datei, ohne Verzeichnisse
%gder Gruppenname der getesteten Datei oder die GroupID, wenn die Gruppe nicht eingetragen ist
%Gdie GroupID
%hdie Verzeichnisnamen des Pfadnamen der getesteten Datei
%Hdas Kommandozeilenargument (Test), mit dem die Datei gefunden wurde
%idie Nummer der Inode der getesteten Datei
%kdie aufgerundete Größe der getesteten Datei in Kilobytes
%ldas Objekt, auf die ein symbolischer Link zeigt; leer, wenn die getestete Datei kein symbolischer Link ist
%mdie Zugriffsrechte als Oktalzahl
%ndie Anzahl der harten Links auf die getestete Datei
%pder Pfadname der Datei
%Pder Pfadname und das Kommandozeilenargument (Test), mit dem die Datei gefunden wurde
%sdie Größe der getesteten Datei in Bytes
%tdie Zeit der letzten Änderung, im ctime Format
%Tkdie Zeit der letzten Änderung, im strftime Format (siehe oben)
%uder Name des Eigentümers der getesteten Datei oder die UserID, wenn der Benutzer nicht eingetragen ist
%UDie UserID des Eigentümers der getesteten Datei

-ls zeigt das Verzeichnis in dem die getestete Datei gefunden wurde mit ls -dils an

Operatoren:

Die Optionen, Tests und Aktionen können mit Operatoren verknüpft werden. Die Bearbeitung erfolgt prinzipiell von links nach rechts.

(Ausdruck) die Klammern fassen den Ausdruck zu einer Operation zusammen

! Ausdruck ist wahr, wenn der Ausdruck falsch ist

-not Ausdruck ist ebenfalls wahr, wenn der Ausdruck falsch ist

Ausdruck1 Ausdruck2 UND Verknüpfung; wenn Ausdruck1 wahr ist, wird Ausdruck2 bewertet (ausgeführt)

Ausdruck1 -a Ausdruck2 auch eine UND Verknüpfung

Ausdruck1 -and Ausdruck2 auch eine UND Verknüpfung

Ausdruck1 -o Ausdruck2 ODER Verknüpfung; Ausdruck2 wird bewertet (ausgeführt), wenn Ausdruck1 falsch ist

Ausdruck1 -or Ausdruck2 auch eine ODER Verknüpfung


Quelle: Linux-Anwenderhandbuch

Schreibe einen Kommentar