Renomear arquivo em massa com uma lista de regras

0

Existe uma maneira de renomear vários arquivos, usando algum modelo escrito, por exemplo, no arquivo txt? Eu preciso substituir algumas palavras específicas com algumas outras palavras no monte de arquivos. Eu tenho, digamos, mais de 1000 arquivos com o seguinte nome:

file1-music-mozart-directed-by-karajan-youtube.mp3
file2-music-beethoven-symphonies-youtube.mp3

e quero capitalizar as palavras "Mozart" e "Karajan" e substituir "youtube" por "YT". Também gostaria de adicionar algumas novas regras (padrões) ao arquivo de texto mencionado no futuro quando eu precisar dele. Mas eu não insisto no arquivo txt, é apenas minha humilde idéia ...

    
por mpingo 10.06.2016 / 17:37

1 resposta

2

$ ls -1
file1-music-mozart-directed-by-karajan-youtube.mp3
file2-music-beethoven-symphonies-youtube.mp3

$ rename -v -e 's/youtube/YT/;
    s/(-music-)([[:alpha:]])/$1 . uc $2/e;
    s/(-directed-by-)([[:alpha:]])/$1 . uc $2/e' *
file1-music-mozart-directed-by-karajan-youtube.mp3 renamed as file1-music-Mozart-directed-by-Karajan-YT.mp3
file2-music-beethoven-symphonies-youtube.mp3 renamed as file2-music-Beethoven-symphonies-YT.mp3

$ ls -1
file1-music-Mozart-directed-by-Karajan-YT.mp3
file2-music-Beethoven-symphonies-YT.mp3

o código perl usado por rename faz o seguinte:

  1. substitui youtube por YT
  2. coloca em maiúscula a primeira letra após -music-
  3. coloca em maiúscula a primeira letra após -directed-by-

Isso, obviamente, corresponde a mais do que apenas mozart e karazan . Ele coloca os nomes de qualquer compositor ou artista e qualquer diretor.

Os dois últimos usam o modificador /e para o operador de pesquisa e substituição, que informa perl para avaliar o lado direito (a substituição) como uma expressão perl, portanto, posso usar funções perl como uc (maiúsculas).

Se você quiser apenas colocar em maiúscula a primeira letra de um pequeno conjunto de palavras, use algo assim:

$ rename -v -e 's/youtube/YT/;
                s/(mozart|karajan)/ucfirst($1)/eg;' *
file1-music-mozart-directed-by-karajan-youtube.mp3 renamed as file1-music-Mozart-directed-by-Karajan-YT.mp3
file2-music-beethoven-symphonies-youtube.mp3 renamed as file2-music-beethoven-symphonies-YT.mp3

$ ls -1
file1-music-Mozart-directed-by-Karajan-YT.mp3
file2-music-beethoven-symphonies-YT.mp3
    
por 10.06.2016 / 18:32

Tags