Der Versuch, eine Reihe von Verzeichnissen von einem Fund auszuschließen, macht mich verrückt! Ich möchte nach allen .java-Dateien in einem Verzeichnisbaum suchen, aber alle in Testverzeichnissen ignorieren. Also habe ich versucht:
find . -name "*.java" -not -path "test"
und
find . -name "*.java" -path "test" -prune
und verschiedene Variationen davon. Allerdings bekomme ich - je nach Variante - entweder alle Java-Dateien (auch die in Testverzeichnissen) oder keine. Ich habe mir andere Fragen hier auf SU angesehen (z. dieses und dieses ), aber entweder gehen sie nicht auf meine Situation ein oder ich vermisse etwas.
Ich verwende gnu find 4.2.27 (fwiw, auf Centos 5.5 mit gnu bash 3.2.25).
Edit: Sorry, ich hätte ursprünglich festlegen sollen, dass ich eine machen muss
-exec grep blah {} \;
In dieser Situation funktioniert die Weiterleitung durch grep -v nicht.
-path '*/test/*' -prune
ist einfacher ausgedrückt als-name test -prune
. Wenn Sie das ersetzen\;
durch eine+
, dasgrep
Der Befehl wird seltener ausgeführt und zeigt (fast immer) Dateinamen bei Übereinstimmungen an. Wenn Sie hinzufügen-H
nach demgrep
enthalten die Übereinstimmungen immer Dateinamen.