
Ich möchte alle .c- und .h-Dateien in meinem Verzeichnis finden, mit Ausnahme der Dateien in den „Test“-Ordnern (es gibt mehrere).
Das von mir durchsuchte Verzeichnis enthält Testverzeichnisse wie:
myDirectory/abc/def/test
myDirectory/abc/def/ghi/test
usw.
Bisher habe ich Folgendes versucht:
find /myDirectory/* -type d -name test -prune -o -name '*.c' -print
und das scheint für die .c-Dateien zu funktionieren, aber wenn ich Folgendes ausführe:
find /myDirectory/* -type d -name test -prune -o -name '*.c' -o -name '*.h' -print
es wird überhaupt nichts zurückgegeben.
Wie schließe ich mehrere Dateitypen ein?
Antwort1
Sie müssen die beiden -name
Prädikate gruppieren:
find /myDirectory/* -type d -name test -prune -o \( -name '*.c' -o -name '*.h' \) -print
Der Backslash wird benötigt, um die Klammern zu verlassen.