Por que esse regex perl não está capturando a referência anterior?

1

Eu tenho um diretório de arquivos

$ ls -1
ep2.mp4
ep3.mp4
ep4.mp4
ep5.mp4
ep6.mp4
ep7.mp4

Eu quero usar o utilitário perl rename para fazer todos os arquivos parecerem, por exemplo,

ep02.mp4 

Comando que estou usando

rename -n "s/([0-9])/0${1}/" *.mp4

resultado atual

ep2.mp4 renamed as ep0.mp4
ep3.mp4 renamed as ep0.mp4
ep4.mp4 renamed as ep0.mp4
ep5.mp4 renamed as ep0.mp4
ep6.mp4 renamed as ep0.mp4
ep7.mp4 renamed as ep0.mp4

Como posso capturar o dígito original e inserir o novo nome de arquivo?

    
por the_velour_fog 13.12.2015 / 04:08

1 resposta

2

Use aspas simples (ou escape com \ ) em torno da declaração de substituição, caso contrário o shell tratará ${1} como variável.

Então você pode fazer:

rename -n 's/([0-9])/0${1}/' *.mp4

Ou

rename -n "s/([0-9])/0\/" *.mp4
    
por 13.12.2015 / 04:16