|
|
(15 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) |
Zeile 6: |
Zeile 6: |
| $ find foo | | $ find foo |
|
| |
|
| === Suchbereich ===
| | ; Suchkriterium |
| [[Find/Anwendungen/Suchbereich]]
| |
| | |
| === Dateiname ===
| |
| [[Find/Anwendungen/Dateiname]]
| |
| | |
| === Dateityp ===
| |
| ; -type C | |
| die Datei ist vom Typ C
| |
| | |
| {|| class="wikitable big options col1center"
| |
| ! Dateityp !! Beschreibung
| |
| |-
| |
| | b || [[Blockorientiertes Gerät]]
| |
| |-
| |
| | c || [[Zeichenorientiertes Gerät]]
| |
| |-
| |
| | d || [[Verzeichnis]]
| |
| |-
| |
| | p || [[Benannte Pipeline]] (FiFo)
| |
| |-
| |
| | f || [[Normale Datei]]
| |
| |-
| |
| | l || [[Symbolischer Link]]
| |
| |-
| |
| | s || [[Socket]]
| |
| |}
| |
| | |
| ; Finde nur Dateien
| |
| $ find -type f
| |
| * Das f steht für files
| |
| * Findet keine Verzeichnisse, aber alle herkömmlichen Dateien in allen Unterverzeichnissen
| |
| | |
| ; Finde nur Verzeichnisse
| |
| $ find -type d
| |
| * Das d steht für directories
| |
| * Findet alle Unterverzeichnisse, aber keine sonstigen Dateien
| |
| | |
| ; -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
| |
| | |
| === Zeitstempel ===
| |
| ; Datum/Zeit
| |
| Dateien nach [[Linux/Datei/Zeit|Zeitstempeln]] suchen
| |
| | |
| {| class="wikitable options big" | | {| class="wikitable options big" |
| | ! Kriterium !! Beschreibung |
| |- | | |- |
| | | -amin N | | | [[Find/Anwendungen/Suchbereich|Suchbereich]] || Wo soll gesucht werden? |
| | | 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
| |
| |- | | |- |
| | | -atime N | | | [[Find/Anwendungen/Dateiname|Dateiname]] || |
| | | auf die Datei ist vor N*24 Stunden zugegriffen worden | |
| |- | | |- |
| | | -cmin N | | | [[Find/Anwendungen/Dateityp|Dateityp]] || |
| | | der Status der Datei wurde vor N Minuten geändert | |
| |- | | |- |
| | | -cnewer Referenzdatei | | | [[Find/Anwendungen/Zeitstempel|Zeitstempel]] || Dateien nach Zeitstempel finden |
| | | der Status der Datei wurde vor weniger Zeit verändert, als seit der letzten Veränderung der Referenzdatei vergangen ist | |
| |- | | |- |
| | | -ctime N | | | [[Find/Anwendungen/Dateigröße|Dateigröße]] || Dateien nach Dateigröße finden |
| | | der Dateistatus wurde vor N*24 Stunden geändert | |
| |- | | |- |
| | | -mmin N | | | [[Find/Anwendungen/Besitzrecht|Besitzrecht]] || |
| | | der Inhalt der Datei wurde vor N Minuten verändert | |
| |- | | |- |
| | | -mtime N | | | [[Find/Anwendungen/Zugriffsrecht|Zugriffsrecht]] || |
| | | der Inhalt der Datei wurde vor N*24 Stunden verändert | |
| |- | | |- |
| | | -newer Referenzdatei | | | [[Find/Anwendungen/Links|Links]] || |
| | | die Datei ist später verändert worden als die Referenzdatei | |
| |- | | |- |
| | | [[Find/Anwendungen/Bedingungen verknüpfen|Bedingungen verknüpfen]] || |
| |} | | |} |
|
| |
|
| ; Argumente N
| |
|
| |
| {| class="wikitable options big col1center"
| |
| |-
| |
| | +N
| |
| | wird interpretiert "alle Zahlen größer als N"
| |
| |-
| |
| | -N
| |
| | wird interpretiert "alle Zahlen kleiner als N"
| |
| |-
| |
| | N
| |
| | wird interpretiert "genau N"
| |
| |-
| |
| |}
| |
|
| |
| ; Beispiele
| |
| $ find /tmp ! -type d -atime +20 -user USER1 2>/dev/null
| |
| findet unterhalb /tmp alle Dateien die kein Verzeichnis sind und seit über 20 Tagen nicht mehr angefasst wurden und dem Benutzer USER1 gehören
| |
|
| |
| $ find /home/USER1 -type f -mmin -20 -user USER1
| |
| findet alle normalen Dateien unterhalb vom Homeverzeichnis von USER1 die innerhalb der letzten 20 Minuten geändert wurden und dem User USER1 gehören
| |
|
| |
| $ find /etc -cnewer /etc/fstab 2>/dev/null
| |
| findet alle Dateien unterhalb /etc deren ctime nach der letzten Änderung (mtime) der /etc/fstab geändert wurde
| |
|
| |
| ; Tage
| |
| $ find -mtime -365
| |
| * Sucht nach Dateien, deren Inhalt innerhalb der letzten 365 Tage geändert wurde (mtime = modification time)
| |
| * Weitere Optionen sind * ctime (change time): Zeitpunkt, an dem der Status der Datei geändert wurde (Name, Rechte)
| |
| * atime (access time): Zeitpunkt an dem auf die Datei zugegriffen wurde
| |
| * Ein Dateilisting selbst ist damit nicht gemeint
| |
| * Bei Bilddateien zählt die Vorschaufunktion eines grafischen Dateimanagers aber bereits als Zugriff
| |
| * Auch hier gibt es, ähnlich wie bei der [https://wiki.ubuntuusers.de/find#Nach-Dateigroesse-suchen Größe], Mindestalter (+), Höchstalter (-) und genaues Alter
| |
|
| |
| ; -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
| |
|
| |
| ; -used N
| |
| auf die Datei ist N Tage nach der letzten Änderung zugegriffen worden
| |
|
| |
| ; -atime Tage
| |
| Findet Dateien, auf die vor Tagen zugegriffen wurden (zur Angabe von Bereichen siehe Option "amin")
| |
|
| |
| ; -atime <n>, -amin <n>
| |
| Finde Dateien, auf die zuletzt vor <n> Tagen (-atime) oder <n> Minuten (-amin) zugegriffen wurde
| |
| * Sie können auch +<n> oder -<n> spezifizieren
| |
| * Dann wird nach Dateien gesucht, auf die vor höchstens, oder mindestens <n> Tagen, oder Minuten zugegriffen wurde
| |
|
| |
| ; -atime N
| |
| auf die Datei ist vor N*24 Stunden 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
| |
|
| |
| ; -anewer <Datei>
| |
| Findet Dateien auf die später zugegriffen wurde als auf Datei <Datei>
| |
|
| |
| ; -amin Minuten
| |
| Findet Dateien, auf die vor Minuten zugegriffen wurden
| |
| * Um bspw
| |
| * alle Dateien zu finden, deren Zugriff vor 2 bis 8 Minuten geschah, können die Angaben kombiniert werden: "-amin +2 -amin -8"
| |
|
| |
| ; -amin N
| |
| auf die Datei ist vor N Minuten zugegriffen worden
| |
|
| |
| ; Minuten
| |
| Sometimes you need to look for files modified in the last day or so, and the previous options are a bit too broad for that
| |
| * The good news is that find also has the -amin, -cmin, and -mmin, which are similar to the other options but they work with minutes rather than days
| |
| * So if you want to look for something that was changed or accessed in the last day, you can use those options
| |
| * find -amin -5
| |
| * nach Dateien suchen, auf die in den letzten 5 Minuten zugegriffen wurde
| |
| * Analog: -cmin, -mmin
| |
|
| |
| ; Alle Dateien, auf die in der letzten Minute zugegriffen wurde
| |
| Um die nachfolgende Suche erfolgreich enden zu lassen, manipulieren wir mit Hilfe von "touch" die Zugriffszeiten einiger Dateien touch sax* find . -amin 1 . ./saxsys.tgz ./sax_logo.gif
| |
|
| |
| ; -ctime <n>, -cmin <n>, -cnewer <Datei>
| |
| Genau wie -atime, -amin und -anewer, doch in Bezug auf die letzte Inhaltsänderung der Datei
| |
|
| |
| ; -ctime N
| |
| der Dateistatus wurde vor N*24 Stunden geändert
| |
|
| |
| ; -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
| |
|
| |
| ; Vergleich $ find -cnewer /tmp/referenz
| |
| * Nach Dateien suchen, die nach der Referenzdatei geändert wurden
| |
| * Mit touch --date=15:00 /tmp/referenz erstellt man sich eine Referenzdatei, wenn man keine hat
| |
|
| |
| ; -mtime Tage
| |
| Findet Dateien, die vor Tagen geändert wurden (zur Angabe von Bereichen siehe Option amin)
| |
|
| |
| ; -mtime N
| |
| der Inhalt der Datei wurde vor IN*24 Stunden verändert
| |
|
| |
| ; -mmin N
| |
| der Inhalt der Datei wurde vor N Minuten verändert
| |
|
| |
| ; -daystart
| |
| misst die Zeiten für die -amin, -atime, -cmin, -ctime, -mmin und -mtime Eigenschaften vom Beginn des aktuellen Tages anstelle der letzten 24 Stunden
| |
| * Diese Option betrifft nur die Tests, die weiter hinten in der Kommandozeile geschrieben sind
| |
| * Werden zeit-bezogene Tests durchgeführt (siehe unten), wird der Beginn des aktuellen Tages als Zeitstempel genommen (und nicht der Zeitpunkt vor 24 Stunden, was der Standard-Einstellung entspricht)
| |
|
| |
| === Größe ===
| |
| Manchmal ist es nützlich, andere Attribute zur Suche zu verwenden
| |
| * Etwa Dateien nach Größe zu finden
| |
| * Ein gutes Beispiel: du arbeitest mit einem Server und stellst fest, dass eine der Partitionen beginnt, voll zu werden
| |
| * Um welche Datei, oder Dateien, handelt es sich? Mit find suchst du Dateien nach Größe und kannst dich dann darum kümmern, Platz zu schaffen
| |
| * Die Option um nach Größe zu prüfen ist -size, gefolgt von der Größenangabe, nach der du suchst
| |
| * Du kannst alle möglichen Einheiten angeben, von Blöcken (b) bis Gigabytes (G)
| |
| * Um Dateien der Größe 100 kB zu finden, gibst du ein: find -size 100k
| |
| * Damit werden alle Dateien der Größe 100 kB gefunden
| |
| * Das ist ziemlich speziell
| |
| * Um größere oder kleinere Dateien einer bestimmten Größe zu finden, verwendest du + oder - zusätzlich zur Zahl
| |
| * Also sollte find -size +100k alle Dateien größer als 100 kB zurückgeben
| |
| * Und find -size -100k alles was kleiner ist
| |
| * Mit dem -empty-Parameter kannst du auch leere Dateien finden: find -empty -type -f
| |
| * Beachte, dass ich eine zusätzliche Prüfung für den Typ der Datei verwende
| |
| * Ohne diese Option wird find Verzeichnisse als "leere Dateien" anzeigen
| |
|
| |
| ; -size Number[Einheit]
| |
| Findet Dateien einer bestimmten Dateigröße
| |
| * In der Voreinstellung ist die Einheit 512 Byte große Blöcke, das heißt, bei Number=1 werden alle Dateien mit einer Größe zwischen 1 und 512 Bytes gefunden
| |
| * Als Einheit kann stehen: b für 512 Byte-Blöcke (Voreinstellung), c für 1 Byte-Blöcke, k für Kilobyte-Blöcke und w für 2 Byte-Blöcke
| |
|
| |
| ; Maximale Größe
| |
| find -size -100c -ls
| |
| * Nach Dateien suchen, die bis zu 100 Bytes belegen
| |
| * Das - vor der Zahl bedeutet "bis zu"
| |
| * Das c hinter der Zahl bedeutet character, welche früher 1 Byte belegten, aber b ist schon für die Maßeinheit Block (= 512 Bytes) vergeben
| |
| * Mittels -ls läßt sich die Größe der gefundenen Dateien überprüfen
| |
| * Deswegen wird es hier, vor den anderen Aktionen, erwähnt
| |
|
| |
| ; Exakte Größe
| |
| find -size 100c -ls
| |
| * nach Dateien suchen, die genau 100 Bytes groß sind (kein Vorzeichen)
| |
|
| |
| ; Mindestgröße
| |
| find -size +100M
| |
| * Nach Dateien suchen, die 100 Megabytes oder größer sind (Vorzeichen +)
| |
| * Statt M kann man auch k und G für Kilobytes und Gigabytes angeben
| |
|
| |
| ; Zwischen Mindest- und Maximalgröße
| |
| find -type f -size +64c -size -4096c | wc -l
| |
| * Nur nach Dateien suchen, die zwischen 64 und 4096 Bytes groß sind, und per Pipe an [https://wiki.ubuntuusers.de/wc wc] übergeben, um die Anzahl der gefundenen Dateien zu bestimmen
| |
|
| |
| ; Blockgröße
| |
| find -size 10
| |
| * Ohne Angabe zur Maßeinheit wird die Zahl als Anzahl Blöcke interpretiert, hier also nach 10 Blöcken à 512 Bytes
| |
| * Die Angabe b ist gleich bedeutend
| |
| * Wenn es Probleme mit der Größe gibt, dann wahrscheinlich, weil man c oder k oder M vergessen hast
| |
|
| |
| ; Leeren Dateien
| |
| Leere Verzeichnisse und Dateien der Größe 0 find -empty
| |
|
| |
| ; -empty
| |
| die reguläre Datei oder das Verzeichnis ist leer
| |
|
| |
| ; "size N[{c,k}]"
| |
| die Datei belegt N Datenblöcke zu 512 Bytes, oder N Bytes und N Kilobytes mit nachgestelltem c oder k
| |
|
| |
| === Besitzer und Gruppe ===
| |
| $ find / -user BENUTZERNAME
| |
|
| |
| ; Dateien nach Benutzer suchen
| |
| Ein weiterer nützlicher Einsatz von find ist es, Dateien nach Besitzerstatus zu lokalisieren, sogar Dateien mit fehlendem Besitzer
| |
| * Schauen wir uns das mal an
| |
| * Wenn du Dateien zwischen Systemen verschoben hast, oder wenn du Benutzer entfernt hast, hast du möglicherweise verwaiste Dateien
| |
| * Um solche zu finden nimmst du: find -nouser
| |
| * Um Dateien, die tatsächlich im Besitz eines bestimmten Benutzers sind, zu finden, nimmst du die -user oder -uid Optionen
| |
| * Die -uid Option erlaubt dir nach der nummerischen User-ID (UID) zu suchen und -user erlaubt dir nach Name oder UID zu suchen
| |
| * Also wenn ich alle meine Dateien in einem Verzeichnis finden will benutze ich find -user jzb
| |
| * Oder ich könnte find -user 1000 oder find -uid 1000 eingeben
| |
| * Vielleicht suchst du die Dateien die Benutzer A oder B gehören
| |
| * Das kannst du erreichen indem du den Operator -o hinzufügst: find -user root -o -user www-data
| |
| * Damit werden alle Dateien gefunden die Benutzer root oder www-data gehören
| |
| * Wenn du umgekehrt alle Dateien finden möchtest die nicht dem bestimmten Benutzer gehören, nimmst du den -not-Operator: find -not -user www-data
| |
| * Natürlich funktioniert -not auch zusammen mit anderen Optionen
| |
| * Du könntest nach allen Dateien suchen die einem Benutzer gehören, die nicht mehr als eine bestimmte Größe haben
| |
| * Beispiel: find -user www-data -not -size +100k
| |
|
| |
| ; -user Nutzer
| |
| Findet Dateien des "Nutzers" (UID oder Nutzername)
| |
|
| |
| ; Alle Dateien im Verzeichnis /tmp, die user gehören
| |
| find /tmp/ -user user 2>/dev/null
| |
| /tmp/kfm-cache-500
| |
| /tmp/kfm-cache-500/index.html
| |
| /tmp/kfm-cache-500/index.txt
| |
| /tmp/acout.1364.NHKnJh
| |
| /tmp/acin.1364.c36auh
| |
|
| |
| ; Dateien nach Gruppen suchen (-group)
| |
| Eine weitere Möglichkeit, nach Dateien zu suchen ist nach Gruppe, mit der -group-Option
| |
| * Diese Option arbeitet mit einem Gruppennamen oder einer Gruppen-ID (GID)
| |
| * Die grundlegende Syntax ist find -group groupname
| |
| * Können mit anderen Operatoren kombiniert werden, um zum Beispiel Dateien eines Benutzers zu finden, die auch zu einer bestimmten Gruppe gehören.s
| |
|
| |
| ; -user Name
| |
| die Datei gehört dem Anwender Name
| |
|
| |
| ; -uid N
| |
| die Kennziffer des Eigentümers ist N
| |
|
| |
| ; -gid N
| |
| die Datei gehört der Gruppe mit der Kennzahl N
| |
|
| |
| ; -group Name
| |
| die Datei gehört der Gruppe Name
| |
|
| |
| ; -nouser
| |
| die Datei gehört keinem im System eingetragenen Benutzer
| |
|
| |
| ; -nogroup
| |
| die Datei gehört keiner im System angemeldeten Gruppe
| |
|
| |
| === Zugriffsrecht ===
| |
| Gelegentlich möchtest du dein Dateisystem nach Dateien überprüfen, die global beschreibbar sind, oder sonstige "falsche" Berechtigungen haben
| |
| * Das find-Werkzeug unterstützt dies mit mehreren verschiedenen Optionen
| |
| * Am einfachsten sind die Operatoren -readable, -writable, und -executable
| |
| * Diese prüfen die Berechtigungen des aktuell angemeldeten Benutzers, der find aufruft
| |
| * Beachte, dass diese Optionen in älteren Versionen von find nicht verfügbar sind
| |
| * Also wenn deine Distribution etwas älter ist hast du diese Optionen eventuell noch nicht
| |
| * Ein andere Option nach der Dateiberechtigung zu suchen ist die Benutzung von -perm, was nach dem aktuellen Dateistatus schaut
| |
| * Auf diese Art kannst du sehen ob eine Datei mit einer bestimmten Kombination von Berechtigungen übereinstimmt
| |
| * Zum Beispiel wenn du sehen willst welche Dateien von Benutzer und Gruppe ausführbar sind, nimmst du: find -type f -perm -110
| |
| * Die 110 sagt find "Schau nach Dateien das Ausführen-Bit für Benutzer und Gruppe gesetzt haben!" und das - sagt find die anderen Bit zu ignorieren
| |
| * Das heißt, es spielt keine Rolle, wenn die Datei auch beschreibbar oder lesbar ist, solange die Bit gesetzt sind, die sie ausführbar machen
| |
| * Um die Suche auf Dateien einzuschränken, die exakt dem angegeben Staus entsprechen, benutzt du nicht den - -Operator
| |
|
| |
| Was, wenn du nach Dateien suchst die das Ausführen-Bit für Benutzer oder Gruppe haben? Dann nimmst du / statt - :
| |
| $ find -type f -perm /110
| |
|
| |
| Jede Datei, die die Gruppen- oder Eigentümer-Berechtigung hat, wird gefunden
| |
| * Suchen nach Berechtigung kann überaus hilfreich sein, aber auch komplex
| |
| * Es kann etwas dauern um die Syntax zu verstehen, besonders für die, die noch nicht mit dem Eigentümer/Berechtigung-Konzept vertraut sind
| |
| * In diesem Fall ist das Lesen der man-Seiten nicht nur empfehlenswert, sondern unerlässlich
| |
|
| |
| ; -perm Modus
| |
| Findet Dateien, deren Rechte exakt dem angegebenem Modus entsprechen (Angabe numerisch oder symbolisch)
| |
| * die Zugriffsrechte auf die Datei entsprechen exakt dem Modus; der Modus kann als Oktalzahl oder mit den bei chmod(1) beschriebenen Kennungen beschrieben werden, die Kennungen werden auf Modus 000bezogen
| |
|
| |
| ; -perm -Modus
| |
| Findet Dateien, bei denen mindestens die durch Modus angegebenen Rechteflags gesetzt sind
| |
|
| |
| (mindestens) die Zugriffsrechte für den Modus sind gesetzt
| |
|
| |
| ; -perm +Modus
| |
| Findet Dateien, bei denen mindestens eines der durch Modus angegebenen Rechteflags gesetzt ist
| |
| * die Zugriffsrechte entsprechen höchstens dem Modus (oder sind weiter eingeschränkt)
| |
|
| |
| === Links ===
| |
| ; -links Anzahl
| |
| Findet Dateien, auf die Anzahl fester Links zeigen
| |
|
| |
| ; Dateien im Verzeichnis /usr mit 43 harten Links
| |
| find /usr/ -links 43 2>/dev/null /usr/include /usr/share
| |
| In den Ausgaben wurden die Fehler nach "/dev/null" verschoben, da find natürlich nur Verzeichnisse unter die Lupe nimmt, zu dessen Zugang der Benutzer berechtigt ist
| |
|
| |
| ; -lname Muster
| |
| die Datei ist ein symbolischer Link auf eine Datei oder ein Verzeichnis mit einem zum Muster passenden Namen
| |
|
| |
| ; -inum IN
| |
| die Datei belegt die Inode mit der Nummer N
| |
|
| |
| ; find all the hard links
| |
| A common request is a way to find all the hard links to some file
| |
| * Using "ls ‑li file" will tell you how many hard links the file has, and the inode number
| |
| * You can locate all pathnames to this file with:
| |
| find mount-point -xdev -inum inode-number
| |
| * Since hard links are restricted to a single filesystem, you need to search that whole filesystem so you start the search at the filesystems mount point. (This is likely to be either "/home" or "/" for files in your home directory.)
| |
| * The "‑xdev" option tells find to not search (descend into) any other filesystems
| |
| * While most Unix and all Linux systems have a find command that supports the "‑inum" criterion, this isnt POSIX standard
| |
| * Older Unix systems provided the "ncheck" utility instead that could be used for this
| |
|
| |
| === Bedingungen verknüpfen ===
| |
| find hält logische Operatoren bereit, um verschiedene Kriterien miteinander zu verknüpfen
| |
|
| |
| ; Tests kombinieren
| |
| * <c1> -a <c2>: Wahr, wenn beide, <c1> und <c2>, wahr sind. -a wird bereits implizit aktiviert, daher brauchen Sie nur <c1> <c2> <c3>
| |
| * eingeben, wenn Sie alle Tests <c1>, <c2>,
| |
| * durchführen möchten
| |
| * <c1> -o <c2>: Wahr, wenn entweder <c1>, <c2> oder beide wahr sind. -o hat eine geringere Wertigkeit als -a
| |
| * Wenn Sie also Dateien möchten, die Kriterium <c1> oder <c2> und Kriterium <c3> entsprechen, müssen Sie Klammern verwenden: ( <c1>-o <c2> ) -a <c3>
| |
| * Damit die hier verwendeten Klammern nicht von Ihrer Shell interpretiert werden, müssen Sie sie durch Voranstellen eines Rückstriches (\) schützen
| |
| * -not <c1>: Invertiert den Test <c1>
| |
| * Also ist -not <c1> wahr, wenn <c1> falsch ist
| |
|
| |
| ; Operatoren
| |
| Die Optionen, Tests und Aktionen können mit Operatoren verknüpft werden
| |
| * Die Bearbeitung erfolgt von links nach rechts
| |
|
| |
| {|| class="wikitable options big "
| |
| |-
| |
| | | ( 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
| |
| |-
| |
| |}
| |
|
| |
| ; Und-Kombination
| |
| Treffer müssen alle Kriterien erfüllen find -mindepth 3 -maxdepth 5
| |
| * Finde ab Unterverzeichnis(se) 3 (mindepth 3) UND bis Unterverzeichnis(se) 5 (-maxdepth 5)
| |
| * Weiters Beispiel der UND-Kombination
| |
| find -mindepth 3 -type f -name "*.avi" -size +5M
| |
| * Beginnt die Suche ab Unterverzeichnis(se) 3 (-mindepth 3), UND findet nur gewöhnliche Dateien (‑type f), die die Endung .avi besitzen UND mindestens 5 MB groß sind (-size +5M)
| |
|
| |
| ; Oder-Kombination
| |
| find -name "susi.*" -or -name "susanne.*"
| |
| * Sucht alle Dateien die mit "susi." ODER "susanne." beginnen
| |
|
| |
| ; ODER oder NICHT-Kombination
| |
| Man kann die Suchoptionen aber auch per ODER oder NICHT verknüpfen:
| |
| * Negation
| |
| find ! -name "*.avi" -not -name "*.mp*g"
| |
| * Sucht Dateien die von der Dateiendung weder avi, noch mpg oder mpeg sind
| |
| * Ausrufezeichen und -not sind gleichbedeutend
| |
|
| |
| ; Klammerung
| |
| Bei umfangreichen Kombinationen kann eine Klammerung erforderlich sein, um das gewünschte Resultat zu erhalten
| |
|
| |
| ; ohne Klammern
| |
| find -name "susi.*" -or -name "susanne.*" -name "*.txt"
| |
| * Ohne Klammern wird erst die UND-Verbindung gebildet, also "susanne.*" und "*.txt", danach erst ODER "susi". susi.png würde also gefunden
| |
|
| |
| ; mit Klammern
| |
| find \( -name "susi.*" -or -name "susanne.*" \) -name "*.txt"
| |
| * Klammern müssen maskiert werden
| |
| * Hier wird jetzt für alle Dateien erfordert, dass diese auf .txt enden
| |
|
| |
| ; Beispiel
| |
| Suche nach ausführbaren Dateien (keine Verzeichnisse), die user gehören
| |
| find . -maxdepth 1 \! -type d -a -perm +111 -a -user user ./.xinitrc ./.xsession ./dialog ./selfeditor.pl
| |
|
| |
| ; Erläuterung
| |
| * Die Suche wurde auf das aktuelle Verzeichnis beschränkt "-maxdepth 1"
| |
| * Verzeichnisse ausgeschlossen "\! -type d" (das "!" ist ein Sonderzeichen der Shell, deswegen muss die Auswertung durch die Shell verhindert werden)
| |
| * Es sollen alle Dateien gefunden werden, bei denen mindestens in einer [../../../F:%5Cebooks%5CLinux%5CEinführungen%5Clinuxfibel%5Ceigentum.htm Rechtegruppe] das x-Flag gesetzt ist "-perm +111" und die user gehören "-user user"
| |
| * Die Suchkriterien sind jeweils per UND zu verknüpfen
| |
| * Da find rekursiv alle Unterverzeichnisse (eventuell bis zu einer bestimmten Tiefe) durchsucht, kann die Ausführung sehr langwierig werden
| |
|
| |
|
| |
| [[Kategorie:Linux/Befehl]]
| |
| [[Kategorie:findutils]] | | [[Kategorie:findutils]] |