Найти все файлы '.c' и '.h' в каталоге, за исключением каталогов 'test' в Linux

Найти все файлы '.c' и '.h' в каталоге, за исключением каталогов 'test' в Linux

Я хочу найти все файлы .c и .h в моем каталоге, за исключением тех, что находятся в папках «test» (их несколько).

В каталоге, который я ищу, есть тестовые каталоги, такие как:

myDirectory/abc/def/test
myDirectory/abc/def/ghi/test

и т. д.

На данный момент я попробовал:

find /myDirectory/* -type d -name test -prune -o -name '*.c' -print

и это, кажется, работает для файлов .c, но когда я запускаю:

find /myDirectory/* -type d -name test -prune -o -name '*.c' -o -name '*.h' -print

вообще ничего не возвращается.

Как включить несколько типов файлов?

решение1

Вам необходимо сгруппировать два -nameпредиката:

find /myDirectory/* -type d -name test -prune -o \( -name '*.c' -o -name '*.h' \) -print

Обратная косая черта необходима для экранирования скобок.

Связанный контент