cd
para o diretório e execute o seguinte (usando perl-rename
). Esta é uma "corrida a seco" primeiro.
rename -n 's/^([0-9]{2})\.([0-9]{2})\.([0-9]{2}) (.*)\.mp3$/$4 20$3-$1-$2.mp3/' *
02.04.11 DJ Kilbot.mp3 -> DJ Kilbot 2011-02-04.mp3
Se você está feliz com a saída, então execute-a de verdade.
rename 's/^([0-9]{2})\.([0-9]{2})\.([0-9]{2}) (.*)\.mp3$/$4 20$3-$1-$2.mp3/' *
Explicação
-
rename -n
: execute um teste "dry-run". -
's/FOO/BAR/'
substitui o regexFOO
e substitui porBAR
. -
^([0-9]{2})\.([0-9]{2})\.([0-9]{2}) (.*)\.mp3$
: regex para capturar. Combine o início da string^
, depois três lotes de[0-9]{2}
(ou seja, dois números consecutivos) separados por um ponto (\.
quando escapou). Em seguida, um espaço e(.*)\.mp3$
. Parens()
captura o conteúdo para uso na substituição. -
$4 20$3-$1-$2.mp3
: substitua com o nome do DJ o quarto grupo de captura ($4
), ou(.*)
acima, depois o resto da string como especificado (ou seja, o terceiro, primeiro e segundo grupos). -
*
: atua em todos os arquivos no diretório.
Simplifique
Esta regex tem um pouco de verificação de erros incorporada. Se você tem certeza de que todos os arquivos são nomeados de forma consistente, você pode simplificá-la ligeiramente para o seguinte.
rename 's/^(..)\.(..)\.(..) (.*)\.mp3$/$4 20$3-$1-$2.mp3/' *