A ação -print0
é vinculada apenas ao segundo -name
"filtro" (teste na expressão de referência), portanto, só imprimirá algo se o segundo filtro corresponder. Isso ocorre porque o operador padrão na expressão de localização é and
e se liga mais do que or
( -o
). ou seja, sua segunda expressão é avaliada como:
find -name '*.[chS]' -o \( -name '*.cpp' -print0 \) | xargs -0 echo
Tente agrupar os filtros:
find \( -name '*.[chS]' -o -name '*.cpp' \) -print0 | xargs -0 echo
Você também pode fazer isso se quiser:
find -name '*.[chS]' -print0 -o -name '*.cpp' -print0 | xargs -0 echo