
Я хочу найти все файлы .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
Обратная косая черта необходима для экранирования скобок.