Zum Inhalt springen

Find/Anwendungen: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
 
(6 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 6: Zeile 6:
  $ find foo
  $ find foo


=== Suchbereich ===
; Suchkriterium
[[Find/Anwendungen/Suchbereich]]
{| class="wikitable options big"
 
! Kriterium !! Beschreibung
=== Dateiname ===
[[Find/Anwendungen/Dateiname]]
 
=== Dateityp ===
[[Find/Anwendungen/Dateityp]]
 
=== Zeitstempel ===
[[Find/Anwendungen/Zeitstempel]]
 
=== Dateigröße ===
[[Find/Anwendungen/Dateigröße]]
 
=== Besitzrecht ===
[[Find/Anwendungen/Besitzrecht]]
 
=== Zugriffsrecht ===
[[Find/Anwendungen/Zugriffsrecht]]
 
=== Links ===
[[Find/Anwendungen/Links]]
 
=== 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 )
| [[Find/Anwendungen/Suchbereich|Suchbereich]] || Wo soll gesucht werden?
| | die Klammern fassen den Ausdruck zu einer Operation zusammen
|-
|-
| | ! Ausdruck
| [[Find/Anwendungen/Dateiname|Dateiname]] ||  
| | ist wahr, wenn der Ausdruck falsch ist
|-
|-
| | -not Ausdruck
| [[Find/Anwendungen/Dateityp|Dateityp]] ||  
| | ist ebenfalls wahr, wenn der Ausdruck falsch ist
|-
|-
| | Ausdruck1 Ausdruck2
| [[Find/Anwendungen/Zeitstempel|Zeitstempel]] || Dateien nach Zeitstempel finden
| | UND Verknüpfung; wenn Ausdruck1 wahr ist, wird Ausdruck2 bewertet (ausgeführt)
|-
|-
| | Ausdruck1 -a Ausdruck2
| [[Find/Anwendungen/Dateigröße|Dateigröße]] || Dateien nach Dateigröße finden
| | auch eine UND Verknüpfung
|-
|-
| | Ausdruck1 -and Ausdruck2
| [[Find/Anwendungen/Besitzrecht|Besitzrecht]] ||
| | auch eine UND Verknüpfung
|-
|-
| | Ausdruck1 -o Ausdruck2
| [[Find/Anwendungen/Zugriffsrecht|Zugriffsrecht]] ||  
| | ODER Verknüpfung; Ausdruck2 wird bewertet (ausgeführt), wenn Ausdruck1 falsch ist
|-
|-
| | Ausdruck1 -or Ausdruck2
| [[Find/Anwendungen/Links|Links]] ||  
| | 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
|-
|-
| [[Find/Anwendungen/Bedingungen verknüpfen|Bedingungen verknüpfen]] ||
|}
|}


; 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]]

Aktuelle Version vom 13. September 2025, 13:38 Uhr

Anwendungen

Alle Dateien im aktuellen und allen Unterverzeichnissen (rekursiv)

$ find 

Alle Dateien und Verzeichnissen im Unterverzeichnis foo des aktuellen Verzeichnisses

$ find foo
Suchkriterium
Kriterium Beschreibung
Suchbereich Wo soll gesucht werden?
Dateiname
Dateityp
Zeitstempel Dateien nach Zeitstempel finden
Dateigröße Dateien nach Dateigröße finden
Besitzrecht
Zugriffsrecht
Links
Bedingungen verknüpfen