Suchen Sie in Linux alle '.c'- und '.h'-Dateien im Verzeichnis außer in 'Test'-Verzeichnissen

Suchen Sie in Linux alle '.c'- und '.h'-Dateien im Verzeichnis außer in 'Test'-Verzeichnissen

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 -namePrä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.

verwandte Informationen