Uma abordagem seria usar rename
(também conhecido como prename
). Para substituir _
por -
:
rename 's/_/-/g' dirname
(o g
substitui todas as ocorrências. Omitir se você quiser substituir apenas uma ocorrência)
Combinando isso com sua declaração find
:
find . -name "*$findwhat*" -type d -execdir rename "s/$findwhat/$replacewith/g" {} \;
Talvez seja necessário modificar isso para que a substituição de variável funcione corretamente.
Nota: O {}
indica -execdir/-exec
onde inserir o nome do arquivo no comando; o ;
informa onde os comandos terminam - e você precisa escapar com \
porque senão o shell o tratará como um separador de comandos.