Encuentre todos los archivos '.c' y '.h' en el directorio excepto en los directorios 'test' en Linux

Encuentre todos los archivos '.c' y '.h' en el directorio excepto en los directorios 'test' en Linux

Quiero encontrar todos los archivos .c y .h en mi directorio, excluyendo los que están en las carpetas 'prueba' (hay varias).

El directorio que estoy buscando tiene directorios de prueba como:

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

etc.

Hasta ahora he probado:

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

y esto parece funcionar para los archivos .c, pero cuando ejecuto:

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

no se devuelve nada en absoluto.

¿Cómo incluyo varios tipos de archivos?

Respuesta1

Tienes que agrupar los dos -namepredicados:

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

La barra invertida es necesaria para escapar del paréntesis.

información relacionada