Ubuntu renomear comando regex não funciona

1

Estou tentando usar o comando rename para renomear um monte de imagens em uma pasta.

Eu tenho esta lista de imagens,

image.php?x=10
image.php?x=25
image.php?x=50
image.php?x=75

Estou tentando renomeá-los para 10.png , 25.png etc. usando este regex:

$ rename "s/image\.php\?x\=(.*)/$1\.png/g" *

Esse regex funciona bem, por exemplo, no Sublime Text, todas as correspondências são substituídas corretamente ...

Mas quando eu executo o comando rename assim, com $0 ele diz bash.png already exists e com $1 ele diz que .png já existe, então nada foi salvo!

wat do?

    
por Adam 06.08.2014 / 17:40

1 resposta

2

Provavelmente, seu shell está expandindo $1 (provavelmente uma string vazia) antes de passá-lo para o comando rename . Tente aspas simples em vez de aspas duplas em torno do regex:

rename -- 's/image\.php\?x\=(.*)/$1.png/g' *

(também, não deve ser necessário escapar do ponto na expressão de substituição, por exemplo, você pode usar $1.png no lugar de $1\.png )

    
por steeldriver 06.08.2014 / 17:51