Tente isto:
find -regex ".*\.\(cpp\|h\)$"
Um exemplo com mais alternativas:
find -regex ".*\.\(cpp\|c\|h\|o\)$"
Este comando irá imprimir os nomes dos arquivos * .cpp no diretório fornecido:
find . -name "*.cpp" -print
Como posso imprimir os nomes dos arquivos * .cpp e * .h?
Use -o
; veja os exemplos aqui.
Vou dar um exemplo. Isto irá procurar por arquivos com owner = 1000 e escrevê-los para "uid.list", procurar por arquivos com group = 1000 e escrevê-los para "gid.list" e ele irá ignorar os caminhos que começam com / proc, / sys, / dev . A vantagem das condições combinadas é que o sistema de arquivos é varrido apenas uma vez. Aqui está:
find / \
\( \( -path "/proc" -or -path "/sys" -or -path "/dev" \) -prune \) -or \
\( \( -user 1000 -fprint "uid.list" \) ,
\( -group 1000 -fprint "gid.list" \) \)
Uso:
find . -name "*.cpp" -print -o -name "*.h" -print