Batch renomeia via linha de comando?

2

Eu tenho um servidor Media Temple (dv) no qual estou configurando o Magento.

Enviei algumas milhares de imagens para o diretório / media / import que o cliente me forneceu. O problema é que algumas imagens são .jpg e outras são .JPG.

Existe uma maneira de renomeá-los em lote no servidor? Eu realmente não quero ter que fazer isso localmente e recarregá-los todos.

Eu idealmente faria todos eles minúsculos para que eles sejam uniformes com os outros esquemas de nomeação de imagens usados pelo Magento.

Obrigado,

Danny

    
por dannymcc 12.11.2010 / 15:54

2 respostas

3

Uma sugestão de bash:

   for file in *.JPG; do newfile='echo $file|sed 's/.JPG$/.jpg/'' ; mv -i "$file" "$newfile" ; done

Faz um loop sobre todos os arquivos com uma extensão .JPG, e para cada um deles ele usa sed para construir o novo nome de arquivo transformando um terminal .JPG em um terminal .jpg e executa o mv. O -i é apenas no caso de você ter um fred.JPG e um fred.jpg já. Não se esqueça de distinguir entre aspas simples e backticks, sendo que ambos são usados e não são intercambiáveis.

    
por 12.11.2010 / 16:10
1

Se você tem o utilitário chamado rename installed (é um script Perl), você pode fazer:

rename 'y/A-Z/a-z/' *
    
por 12.11.2010 / 16:11