Você pode usar o comando Renomear (consulte editar 1 ).
Solução 1
Para um número razoável de arquivos / diretório, definindo a opção 4 globstar (não funciona em nome recursivo, veja editar 3 ):
shopt -s globstar
rename -n 's/etckeeper/userkeeper/g' **
Solução 2
Para um grande número de arquivos / diretórios usando renomear e encontrar em duas etapas para evitar renomear arquivos com falha em apenas diretórios renomeados (veja editar 2 ):
find . -type f -exec rename 's/etckeeper/userkeeper/g' {} \;
find . -type d -exec rename 's/etckeeper/userkeeper/g' {} \;
EDIT 1:
Existem dois comandos diferentes de renomeação . Esta resposta usa o comando rename baseado em Perl, disponível em distribuições baseadas no Debian. Para tê-lo em uma distro não baseada em Debian, você pode instalar do cpan ou acessá-lo.
EDIT 2:
Como apontado por Jeff Schaller nos comentários, a opção -depth find Process each directory's contents before the directory itself , então apenas uma opção "ordenada" encontrada por -depth seria suficiente:
find . -depth -exec rename 's/etckeeper/userkeeper/g' {} \;
EDIT 3
A solução 1 não funciona para alvos de renomeação recursiva, (es. etckeeper/etckeeper/etckeeper ) porque os níveis externos são processados antes que os níveis internos e ponteiro para níveis internos se tornem inúteis. (Depois que o primeiro renomear etckeeper/etckeeper/etckeeper será nomeado usrkeeper/etckeeper/etckeeper , a renomeação para etckeeper/etckeeper/ e etckeeper/etckeeper/etckeeper falhará). O mesmo problema corrigido nas opções find by -depth .
EDIT4
Como apontado nos comentários por cas, eu usaria {} + em vez de {} \; - Forçar um script perl como renomear várias vezes (uma vez por arquivo / dir) é caro.