Grupos de captura são ignorados ao renomear arquivos

10

Eu tenho vários arquivos neste formato:

##. ## - Nome do arquivo.mp4

Eu quero renomeá-los para:

s ## e ##. mp4

Isto é o que eu vim com:

renomeie -n "s / ^ (\ d {2}) \. (\ d {2}). * / s $ 1e $ 2.mp4 /"

Funciona quando o testei em http://regexr.com/, mas quando executo o comando na instalação do Ubuntu 12.04, todos os meus arquivos são renomeados parase.mp4

Portanto, parece que os grupos estão sendo ignorados ou não inseridos ou algo nesse sentido. Estou sentindo falta de algo ofuscantemente óbvio ou algo mais está acontecendo?

Acabei usando pyRenamer e funcionou maravilhosamente, mas ainda gostaria de saber por que renamenão está funcionando corretamente.

Felicidades e obrigado por qualquer ajuda que você pode me dar.

0x0049
fonte
você quer dizer s1e1.m4, s1e2.mp4
nux

Respostas:

14

Acho que talvez o uso de aspas duplas esteja permitindo que o shell se expanda $1e$2

$ rename -nv "s/^(\d{2})\.(\d{2}).*/s$1e$2.mp4/" *.mp4
12.34 File name.mp4 renamed as se.mp4

enquanto entre aspas simples a expressão renomear

$ rename -nv 's/^(\d{2})\.(\d{2}).*/s$1e$2.mp4/' *.mp4
12.34 File name.mp4 renamed as s12e34.mp4
chave de aço
fonte
Foi isso! Senhor, você é um gênio.
0x0049