Gibt es eine Möglichkeit zu verhindern, dass find rekursiv in Unterverzeichnisse vordringt?

StackOverflow https://stackoverflow.com/questions/27077

  •  09-06-2019
  •  | 
  •  

Frage

Wenn ich das tue:

$ find / 

Es durchsucht das gesamte System.
Wie kann ich das verhindern?

(Diese Frage stammt von einem „Antwort" zu einer anderen Frage.)

War es hilfreich?

Lösung

Tag auch,

Ich wollte nur auf den Vorschlag von Jon eingehen, -prune zu verwenden.Dies ist nicht die einfachste Suchoption. Um beispielsweise nur im aktuellen Verzeichnis zu suchen, sieht der Suchbefehl folgendermaßen aus:

find . \( -type d ! -name . -prune \) -o \( <the bit you want to look for> \)

Dadurch wird verhindert, dass die Suche in Unterverzeichnisse innerhalb dieses Verzeichnisses absteigt.

Grundsätzlich heißt es: „Beschneiden Sie alles, was ein Verzeichnis ist, dessen Name nicht „.“ ist, d. h.aktuelles Verzeichnis.

Der Suchbefehl wertet jedes im aktuellen Verzeichnis gefundene Element von links nach rechts aus, sodass nach Abschluss des ersten Elements, d. h.Das Prune-Segment wird dann mit dem übereinstimmenden Element in Ihrem zweiten -o (ODER-verknüpften) Ausdruck fortgesetzt.

HTH.

Alles Gute Rob

Andere Tipps

Halten:

-maxdepth n
             True if the depth of the current file into the tree is less than
             or equal to n.

-mindepth n
             True if the depth of the current file into the tree is greater
             than or equal to n.

Möglicherweise ist die Verwendung von Platzhaltern besser geeignet.Wenn Sie beispielsweise alle KSH-Skripte im aktuellen Verzeichnis finden möchten:

$ ls *.ksh

Benutzen Sie die -prune Möglichkeit.

Vielleicht tun Sie es sogar

echo /specific/dir/*.jpg

da es Ihre Shell ist, die den Platzhalter erweitert.Tippen

ls *.jpg

entspricht dem Tippen

ls foo.jpg bar.jpg

Angegeben sind foo.jpg und bar.jpg alle Dateien, die im aktuellen Verzeichnis mit „.jpg“ enden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top