$ 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:
- substitui
youtube
porYT
- coloca em maiúscula a primeira letra após
-music-
- 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