O Unix tem várias maneiras poderosas de renomear arquivos. Aqui está um que usa zsh (certifique-se de tê-lo instalado). Isso primeiro renomeia os diretórios e renomeia os arquivos nos diretórios.
autoload zmv
zmv -o -i '(?)(??)(??)(?)(???)(?)' '$1-$2-$3-$4-$5-$6'
zmv -o -i '(*)/(?)(??)(??)(?)(???)(?).(*)' '$1/$2-$3-$4-$5-$6-$7.$8'
Não está claro, na sua pergunta, se os diretórios podem aninhar-se. Se o fizerem, aqui está um único comando que cuida dos diretórios e arquivos, aproveitando o fato de que uma única substituição de padrão funciona para ambos:
zmv -o -i '(**/)(?)(??)(??)(?)(???)(*)' '$1$2-$3-$4-$5-$6-$7$8'
Se você passar a opção -n
para zmv
, ela mostrará o que o comando teria feito sem realmente mover os arquivos. Eu uso -o -i
no meu exemplo para que ele solicite confirmação se ele sobrescreveria um arquivo e executaria silenciosamente de outra forma.
zmv
está documentado na página zshcontrib
man.