Acho que, uma vez que você usou o operador -or
, é necessário mantê-lo consistente para evitar uma ordem ambígua de operações lógicas quando houver várias condições conectadas usando OR lógico.
Parece que a parte -exec
está agrupada com o segundo -name "*.h"
.
Portanto, para que funcione corretamente, adicione os colchetes conforme abaixo:
find . '(' -name '*.cpp' -o -name '*.h' ')' -exec echo {} ';'
Remember: The parentheses must be quoted or escaped with a backslash to prevent them from being interpreted as special shell characters.
Como alternativa, combine algumas extensões em uma usando -regex
:
find . ! -regex ".*\.\(cpp\|h\)" -exec echo {} \;