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
)