Ola eu gostaria de saber se tem como via linha de comando alterar nomes de arquivo em pastas e sub-pastas de um diretorio trocando somente os tracos (-) por underline (_) e removendo espacos caso existam !?
desde já eu agradeco!!
Ola eu gostaria de saber se tem como via linha de comando alterar nomes de arquivo em pastas e sub-pastas de um diretorio trocando somente os tracos (-) por underline (_) e removendo espacos caso existam !?
desde já eu agradeco!!
Cara, acho que isso aqui te ajuda:
Linux: Substituir espaços em branco por underlines em nome de arquivos [Dica]
Só que esse exemplo é pro diretório atual, para todas as pastas e sub-pastas de um diretório a coisa fica mais complexa...
rename 's/-//' *.*
tentei assim.. num diretorio com imagens mas nao deu certo =/
Vamos lá... esse é um processo em duas etapas:
Obs.: Os comandos abaixo levam em conta que serão executados no diretório que contém a árvore de arquivos e subdiretórios que serão modificados.
1 - Temos que nos assegurar que nenhum (sub)diretório tem os caracteres que vamos trocar, no caso espaço e '-'.
find . -type d | sed -e '1d' | while read line; do NOME="$line"; NOVO=`echo $line | sed -e 's/ //g;s/-/_/g'`; mv $NOME $NOVO; done
Esse comando vai renomear os diretório que possuam os caracteres espaço e '-', para que não dê problema na hora que formos renomear os arquivos.
2 - A sintaxe do comando de troca dos nomes dos arquivos é um pouquinho só diferente da sintaxe para troca dos nomes dos diretórios:
find . -type f | while read line; do NOME="$line"; NOVO=`echo $line | sed -e 's/ //g;s/-/_/g'`; mv $NOME $NOVO; done
É isso aí! Espero que ajude.