Apenas fugindo do inferno:
find . -regex '.*.\(m\|sh\)
parece funcionar. Eu não acho que haja muito consenso se os caracteres especiais regexp precisam ser escapados ou precisam ser removidos entre diferentes ferramentas.
Por exemplo, quero encontrar todos os arquivos em um diretório que terminem em 'm' ou 'sh'. O seguinte funciona corretamente:
find . -regex '.*.m' -o -regex '.*.sh'
Mas isso falha:
find . -regex '.*.(m|sh)'
O que estou fazendo de errado?
Tags find regular-expression