Sei que você já encontrou sua própria solução aceitável, mas quero postar o que normalmente usaria no trabalho. Esta sintaxe funciona para o GNU findutils, que faz parte de qualquer distribuição Linux moderna.
## xargs is much faster than -exec, xargs can run parallel on # cores with -P #
find ./ -type f -name '*.C' -o -name '*.cc' | xargs -I '{}' mv '{}' '{}'.BAK
## If I'm specifying more than two extensions, I would generally use a regex
find ./ -type f -regex ".*\.\(C\|cpp\)$" | xargs -I '{}' mv '{}' '{}'.BAK
Especialmente com os servidores SMP quad-core agora comuns, normalmente você pode executar metade do tempo com -p 4
. Mesmo com apenas um núcleo, xargs
evita que o forking externo find ...-exec
seja iniciado. Com uma área de trabalho e tempo ilimitado, isso não é realmente um problema. Por outro lado, usando recursos do servidor e trabalhando com muitos milhares de arquivos, evitar a sobrecarga desnecessária é uma prioridade.