
Quero encontrar todos os arquivos .c e .h em meu diretório, excluindo aqueles nas pastas 'teste' (existem vários).
O diretório que estou pesquisando possui 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 executo:
find /myDirectory/* -type d -name test -prune -o -name '*.c' -o -name '*.h' -print
nada é retornado.
Como incluo vários tipos de arquivo?
Responder1
Você tem que agrupar os dois -name
predicados:
find /myDirectory/* -type d -name test -prune -o \( -name '*.c' -o -name '*.h' \) -print
A barra invertida é necessária para escapar dos parênteses.