Zum Inhalt springen

Find/Anwendungen/Bedingungen verknüpfen

Aus Foxwiki
Version vom 13. September 2025, 13:16 Uhr von Dirkwagner (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=== 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 * W…“)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)

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
( 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