Zum Inhalt springen

Find/Anwendungen/Dateiname: Unterschied zwischen den Versionen

Aus Foxwiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
 
Zeile 61: Zeile 61:
* Folgende Typen sind implementiert: emacs (Standard), posix-awk, posix-basic, posix-egrep und posix-extende
* Folgende Typen sind implementiert: emacs (Standard), posix-awk, posix-basic, posix-egrep und posix-extende


[[Kategorie:Linux/Befehl]]
[[Kategorie:findutils]]
[[Kategorie:findutils]]

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

Dateiname

Mit vollständigem Namen find -name hausarbeit.odt

  • Sucht die Datei hausarbeit.odt im aktuellen Verzeichnis und allen Unterverzeichnissen
  • Sind mehrere Dateien dieses Namens vorhanden, werden alle Fundstellen aufgelistet
  • Jokerzeichen, Wildcards, wie der *</nowiki> oder das ? müssen maskiert werden, sonst interpretiert sie schon die Shell
  • find -name "*.pdf"
  • Sucht im aktuellen Verzeichnis nach PDF-Dateien. -name berücksichtigt die Groß-/Kleinschreibung bei der Suche, findet also mit obigen Beispiel keine Datei(en) mit Endung *.PDF</nowiki>
  • Das *</nowiki> steht für eine beliebige Anzahl Zeichen
  • find -iname "a*.pdf"
  • Sucht im aktuellen Verzeichnis nach .pdf- und .PDF-Dateien, die mit a oder A beginnen. find -name "katze.*"
  • findet katze.jpg, katze.png, katze.txt und so weiter find -name "katze.??g"
  • findet katze.jpg, katze.png und so weiter Jedes Fragezeichen steht für ein einzelnes Zeichen
  • find -name "*foo*.*x*"
  • findet foo.x, afoo.x, foob.txt und so weiter
-name <Muster>

Finde Dateien, deren Name <Muster> entspricht

-iname <Muster>

Findet Dateien mit Name, wie -name, ignoriert jedoch Groß- und Kleinschreibung

-path Name

Findet Dateien mit Name, wobei Name auch Pfadangaben enthalten kann ("*/include/*.h")

  • Sucht man mit Verzeichnisnamen, in denen ein Schrägstrich / vorkommt, kommt man mit -name nicht weiter
  • Der Parameter -path ist hier die Lösung, denn er erlaubt die Interpretation des Zeichens /. find -path "*2013/J*"
  • findet ~/fotos/2013/Juni und ~/musik/2013/Juli, aber nicht ~/dokumente/2013-Juni

Reguläre Ausdrücke

find hat nicht nur einfach RegEx-Support, es beherrscht auch mehrere unterschiedliche Arten der RegEx-Syntax

  • Mit -regextype und eine der unterstützten Arten wie posix-awk, posix-egrep, kannst du den Typ wählen
  • Lies unter man find nach, welche Arten unterstüzt werden
  • Ein kurze Beispiel
  • Sagen wir ich suche alle Dateien die entweder eine .php oder .js Endung
  • Ich könnte das folgende laufen lassen:
  • find -regextype posix-egrep -regex .*(php|js)$* die egrep-Syntax -regextype posix-egrep zu benutzen und hinten kommt der Reguläre Ausdruck nach dem gesucht wird
  • Der Ausdruck beginnt und endet mit einem Hochkomma, damit die Shell nicht versucht die RegEx auszuwerten
  • Der Ausdruck .* ist ein Joker und bedeute "ein oder mehr beliebige Zeichen". (php|js) weist an nach php oder js zu suchen
  • Die Pipe (|) steht hier für "oder"
  • Das Dollarzeichen "$" hinten weist an, den Ausdruck am Ende eines Strings zu suchen
  • Also trifft etwa eine Datei namens js.txt nicht auf die Abfrage zu
-regex Muster

Wie "-name", nur kann das Muster reguläre Ausdrücke enthalten

-regex Muster

der Pfadname passt zu dem regulären Ausdruck Muster

-regex <Muster>

Wie -name, jedoch wird hier Muster als re­gulärer Ausdruck behandelt

-iregex Muster

Wie "-regex" jedoch ohne Groß-/keinschreibung zu beachten

-iregex <Muster>

Wie -regex, ignoriert aber Groß- und Kleinschreibung

-regextype type

Ändert die Syntax der regulären Ausdrücke, die von -regex und -iregex verstanden werden

  • Folgende Typen sind implementiert: emacs (Standard), posix-awk, posix-basic, posix-egrep und posix-extende