Você precisará fazer isso em várias etapas
- Gerar lista de arquivos contendo a string que você deseja alterar (por exemplo,
find mydir -type f -print | xargs egrep <searchstring>
) - Para cada um desses arquivos, faça as substituições (por exemplo,
| while read fn; do sed 's/searchstring/replacement/g' $fn >/tmp/foo && mv /tmp/foo $fn; done
) - Agora, encontre nomes de diretório para alterar (por exemplo,
find mydir -type d -print | egrep <searchstring>
) - e alterá-los (por exemplo,
| while read olddir; do newdir=echo $olddir | sed 's/searchstring/replacement/g'; mv $olddir $newdir; done
) (deve haver backtics em torno da atribuição echo newdir newdir; agradeço um comentário sobre como incluir backtics em um segmento de código in-line) - E agora nomes de arquivos, já que os nomes dos diretórios não serão alterados. Muito semelhante à alteração do diretório, apenas o
find
inicial deve ser-type f
Isso deve ser o suficiente para você seguir em frente.