find
Funktion
find sucht nach bestimmten Dateien
Syntax
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 zusammengefaßt
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 eines Tests 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 Status von find ist Null, wenn alle Aktionen erfolgreich
waren, im Fehlerfall ist der Status größer als Null.
Optionen
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
- -maxdepth Ebenen
- 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
Kommandozeile übergebenen Dateien und Verzeichnisnamen angewendet
- -mindepth Ebenen
- 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
Linux-Verzeichnis 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 Dateisystemen (auf anderen
Partitionen)
Tests
Alle numerischen Argumente können auf drei Arten angegeben werden:
- +N
- steht für alle Zahlen größer als N
- -N
- steht für alle Zahlen kleiner als N
- N
- steht 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.
Die Tests auf die erweiterten Zeitmarken (Zugriff und Erstellung) werden
nur in solchen Verzeichnissen korrekt behandelt, die auf einem der neuen
Linux-Dateisysteme angesiedelt sind (e2fs, xiafs, new minix). Auf den
anderen Dateisystemen wird nur das Datum der letzten Änderung zuverlässig
getestet. Das Ergebnis der anderen Tests hängt davon ab, ob der
letzte Zugriff bzw. die letzte Änderung so kurz zurückliegen, daß
die veränderte I-Node noch im Arbeitsspeicher (Cache) ist. Dann können
auch für die Dateien der alten Dateisysteme alle drei Zeitmarken
unterschieden werden.
- -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
- -fstype Typ
- die Datei ist in einem Dateisystem vom angegebenen Typ;
unter anderem werden minix, msdos, ext und
proc erkannt
- -gid N
- die Datei gehört der Gruppe mit der Kennzahl 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 paßt 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 paßt zum Muster
- -perm Modus
- die Zugriffsrechte auf die Datei entsprechen exakt dem Modus;
der Modus kann als Oktalzahl oder mit den bei chmod
beschriebenen Kennungen beschrieben werden, die Kennungen werden auf
Modus `000' bezogen
- -perm -Modus
- findet alle Dateien, bei denen mindestens alle Zugriffsrechte vom
Modus gesetzt sind (byteweise UND Maske)
- -perm +Modus
- findet alle Dateien, bei denen mindestens ein Bit der Zugriffsrechte
mit dem Modus übereinstimmt (bitweise UND Maske)
- -regex Muster
- der Pfadname paßt zu dem regulären Ausdruck Muster
- size N[{c,k}]
- die Datei belegt N Datenblöcke zu 512 Bytes bzw. N Bytes
und N Kilobytes mit nachgestelltem `c' oder `k'
- -true
- ist immer wahr
- -type C
- die Datei ist vom Typ C; folgende Typen werden
unterschieden:
- b
- gepufferte Gerätedatei für ein blockorientiertes Gerät
- c
- ungepufferte Gerätedatei für ein zeichenorientiertes
Gerät
- d
- Verzeichnis
- p
- benannte Pipeline (FiFo)
- f
- normale Datei
- l
- symbolischer Link
- s
- Socket
- -uid N
- die Kennziffer 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 (damit
es vor der Shell geschützt ist, muß es zusätzlich
Quotiert 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
- -fprint0 Ausgabedatei
- schreibt den Namen der getesteten Datei in die Ausgabedatei
und schließt die Ausgabe mit einem Nullbyte ab wie `-print0'
- -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
- -print0
- gibt den Pfadnamen der getesteten Datei, von einem Nullbyte
abgeschlossen, auf die Standardausgabe; auf diese Weise können auch
Pfadnamen korrekt weiterverarbeitet werden, die ein Zeilenende enthalten
- -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
- \b
- Rückschritt
- \c
- Abbruch der Ausgabe
- \f
- Seitenvorschub
- \n
- Zeilenvorschub
- \r
- Wagenrücklauf
- \t
- horizontaler Tabulator
- \v
- vertikaler Tabulator
- \\
- der Backslash selbst
ein Backslash, gefolgt von irgendeinem anderen Zeichen wird als
normales Zeichen interpretiert und einfach ausgegeben
- %%
- das Prozentzeichen selbst
- %a
- die Zeit des letzten Zugriffs auf die Datei, in dem Format der
ctime-Funktion
- %Ak
- die Zeit des letzten Zugriffs auf die Datei, in dem von k
bestimmte Format; k hat dabei das gleiche Format wie der
entsprechende 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 Wochentags
- W
- die Nummer der Woche, Montag als erster Wochentag
- x
- Datum (mm/dd/yy)
- y
- die letzten beiden Stellen der Jahreszahl
- Y
- die Jahreszahl
- %b
- die Dateigröße in 512 Byte Blöcken (aufgerundet)
- %c
- das Datum der letzten Statusänderung im Format der C ctime-Funktion
- %Ck
- das Datum der letzten Statusänderung im Format der strftime-Funktion;
Parameter wie oben
- %d
- die Höhe der Datei im Verzeichnisbaum; Null bedeutet, daß
die Datei Kommandozeilenargument ist
- %f
- der Name der getesteten Datei, ohne Verzeichnisse
- %g
- der Gruppenname der getesteten Datei oder die Kennzahl, wenn die
Gruppe nicht eingetragen ist
- %G
- die Gruppenkennzahl
- %h
- die Verzeichnisnamen des Pfadnamen der getesteten Datei
- %H
- das Kommandozeilenargument (Test), mit dem die Datei gefunden
wurde
- %i
- die Nummer der Inode der getesteten Datei
- %k
- die aufgerundete Größe der getesteten Datei in
Kilobytes
- %l
- das Objekt, auf die ein symbolischer Link zeigt; leer, wenn die
getestete Datei kein symbolischer Link ist
- %m
- die Zugriffsrechte als Oktalzahl
- %n
- die Anzahl der harten Links auf die getestete Datei
- %p
- der Pfadname der Datei
- %P
- der Pfadname und das Kommandozeilenargument (Test), mit dem die
Datei gefunden wurde
- %s
- die Größe der getesteten Datei in Bytes
- %t
- die Zeit der letzten Änderung, im ctime-Format
- %Tk
- die Zeit der letzten Änderung, im strftime-Format
(siehe oben)
- %u
- der Name des Eigentümers der getesteten Datei oder die
Kennzahl, wenn der Benutzer nicht eingetragen ist
- %U
- die Benutzerkennzahl des Eigentümers der getesteten Datei
- -prune
- wahr, wenn die Option `-depth' gesetzt ist; sonst falsch
- -ls
- zeigt die gefundene Datei im Format von `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
- Ausdruck1 , Ausdruck2
- Liste; beide Ausdrücke werden immer bewertet (ausgeführt);
der Wahrheitswert des gesamten Ausdrucks entspricht dem von Ausdruck2