GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Verzeichnis in Suchen ausschließen?

Wie kann ich mit find alle Dateien und Verzeichnisse finden, die einem Muster entsprechen, mit Ausnahme eines Verzeichnisses? ?

Angenommen, ich habe die folgende Dateistruktur;

. foo-exclude-me/ foo.txt foo-exclude-me-not/ foo.txt bar/ foo.txt foobar/ bar.txt foofoo.txt

wie würde ich die folgende Ausgabe mit find erhalten :

./bar/foo.txt./bar/foobar./bar/foobar/foofoo.txt./foo-exclude-me-not./foo-exclude-me-not/foo.txt

Ich habe versucht, beide der folgenden Befehle zu verwenden:

finden . -name 'foo-exclude-me' -prune -o -name 'foo*'find . -name 'foo*' ! -path './foo-exclude-me/*'

aber beide geben dies zurück:

./bar/foo.txt
./bar/foobar
./bar/foobar/foofoo.txt
./foo-exclude-me # << this should be excluded
./foo-exclude-me-not
./foo-exclude-me-not/foo.txt
 

Wie kann ich foo-exclude-me richtig ausschließen Verzeichnis?

Akzeptierte Antwort:

find . -name 'foo-exclude-me' -prune -o -name 'foo*' -print
 

Ohne -print , gilt die implizite Standardaktion für alle Übereinstimmungen, auch für beschnittene. Der explizite -print gilt nur unter den angegebenen Bedingungen, die -name 'foo*' sind nur im else-Zweig von -name 'foo-exclude-me' .

Verwenden Sie im Allgemeinen einen expliziten -print wenn Sie etwas Komplexeres als eine Konjunktion von Prädikaten tun.

Dein zweiter Versuch mit ! -path './foo-exclude-me/*' hat nicht funktioniert, weil ./foo-exclude-me stimmt nicht mit ./foo-exclude-me/* überein (kein nachgestellter / ). Hinzufügen von ! -path ./foo-exclude-me würde funktionieren.


Linux
  1. Löschen Sie Dateien und Verzeichnisse anhand ihrer Namen. Keine solche Datei oder Ordner?

  2. Cat-Dateien mit Verzeichnis?

  3. Suchen Sie die Datei und wechseln Sie dann in dieses Verzeichnis in Linux

  4. So schließen Sie ein Verzeichnis in find aus. Befehl

  5. Dateiliste von der Suche ausschließen

So zählen Sie Dateien im Verzeichnis in Linux

So schließen Sie ein Verzeichnis beim Suchen von Dateien in Linux aus

Der Linux-Befehl zum Suchen des Verzeichnisses:Erklärt

rekursives grep:Bestimmte Verzeichnisse ausschließen

Wie lösche ich alle Dateien in einem Verzeichnis außer einigen?

Wie kann ich den Ordner, in dem gesucht wird, von find ausschließen?