Encontre todos os arquivos '.c' e '.h' no diretório, exceto nos diretórios 'test' no Linux

Encontre todos os arquivos '.c' e '.h' no diretório, exceto nos diretórios 'test' no Linux

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 -namepredicados:

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

A barra invertida é necessária para escapar dos parênteses.

informação relacionada