+ Responder ao Tópico



  1. #1

    Padrão Comando shell: Substituir traço por underline em varios arquivos

    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!!

  2. #2

    Padrão

    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...



  3. #3

    Padrão

    rename 's/-//' *.*

    tentei assim.. num diretorio com imagens mas nao deu certo =/

  4. #4

    Padrão

    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.