Não funciona porque -name
espera um padrão de shell. Você pode usar -regex
ou simplesmente montar seu padrão da seguinte forma:
find . -name '*.c' -o -name '*.h' -o -name '*.cc'
Editar
Para fazer isso com um único padrão, você vai querer um regex:
find . -regextype posix-extended -regex '.*\.(c|h|cc)'
Você poderia fazer isso com os regexes emacs padrão, tenho certeza; Eu não os uso nem conheço as principais diferenças, então escolhi o que conheço.
Se você realmente deseja usar um único escudo, está sem sorte: a única sintaxe para várias strings é {a,b}
, e isso não é suportado por find
. Mas não há nada de errado com o tipo de comando de construção / encadeamento no meu primeiro exemplo. É como find
deve ser usado.