Como renomear milhares de arquivos eficientemente?

4

Eu tenho um monte de arquivos de música (literalmente milhares de arquivos) no meu PC Fedora que eu gostaria de renomear com duas regras:

  1. Todo espaço deve ser substituído pelo caractere _ (sublinhado) e
  2. Todas as letras maiúsculas devem ser substituídas por suas contrapartes minúsculas.

Então, por exemplo, o nome do arquivo da música Under A Glass Moon, que é a sexta faixa do álbum, é chamado 06 Under A Glass Moon.mp3 no meu computador e eu gostaria que ele fosse nomeado% código%.

Minha pergunta é: é possível fazer isso com todas as músicas / arquivos da minha coleção sem ter que fazer isso manualmente.

Observação: Só para esclarecer, não preciso editar os metadados das músicas. Eu faço isso com o EasyTAG. Tudo o que preciso fazer é modificar os nomes de arquivos da música.

Atualização: Eu sei que essa pergunta já tem algum tempo e algumas pessoas já responderam, mas encontrei uma solução mais simples usando o EasyTAG. A maneira de fazer isso está indo:

View --> Scanner Mode --> Process Fields. 

Lá você pode escolher substituir determinado personagem por outros (não se limitando a substituir "" por "_"), você pode escolher entre maiúsculas e minúsculas à vontade, e muitas outras coisas. Além disso, você pode decidir quais campos deseja fazer as alterações. Recurso muito útil.

Além disso, obrigado a todos que responderam. Sua ajuda foi muito útil.

    
por Carl Rojas 09.01.2015 / 04:27

2 respostas

1

Você pode instalar o script Perl rename . Então tente fazer isso:

$ rename -n 's/[A-Z]/lc($&)/ge; s/\s/_/g' files*

(remova a chave -n quando seus testes estiverem OK)

Existem dois utilitários chamados rename . O do Fedora não pode fazer isso. Algumas outras distribuições vêm com o Perl por padrão. Se você executar o seguinte comando ( GNU )

$ file "$(readlink -f "$(type -p rename)")"

e você tem um resultado como

.../rename: Perl script, ASCII text executable

e não contendo:

ELF

então esta parece ser a ferramenta certa =)

Se não, como no Fedora, instale-o manualmente .

Por último, mas não menos importante, esta ferramenta foi originalmente escrita por Larry Wall, o pai de Perl.

    
por 09.01.2015 / 04:33
0

Usando o mesmo comando rename como @sputnick, combinado com find :

find /path/to/collection -type f -execdir rename -n '$_ = lc;y/ /-/' {} +
  • $_ = lc converte a entrada para minúscula. y/ /-/ altera os espaços para - (semelhante a tr ).
  • -execdir executa o comando no diretório do arquivo, para que {} seja substituído por ./name-of-file . Portanto, os diretórios devem permanecer inalterados por ele.
por 09.01.2015 / 04:39