Você precisa agrupar os dois predicados -name
:
find /myDirectory/* -type d -name test -prune -o \( -name '*.c' -o -name '*.h' \) -print
A barra invertida é necessária para escapar dos parênteses.
Eu quero encontrar todos os arquivos .c e .h no meu diretório, excluindo os que estão nas pastas 'teste' (existem vários).
O diretório que estou procurando tem diretórios de teste, como:
myDirectory/abc/def/test
myDirectory/abc/def/ghi/test
etc.
Até agora, eu tentei:
find /myDirectory/* -type d -name test -prune -o -name '*.c' -print
e isso parece funcionar para os arquivos .c, mas quando eu corro:
find /myDirectory/* -type d -name test -prune -o -name '*.c' -o -name '*.h' -print
nada é retornado.
Como incluo vários tipos de arquivo?