Ubuntu 重命名命令正则表达式不起作用

Ubuntu 重命名命令正则表达式不起作用

我正在尝试使用rename命令重命名文件夹中的一堆图像。

我有这个图片列表,

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

我正在尝试使用以下正则表达式将它们重命名为10.png25.png

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

这个正则表达式在例如 Sublime Text 中工作正常,所有匹配项都被正确替换......

但是当我像这样运行重命名命令时,$0它说bash.png already exists并且$1它说.png已经存在,所以没有任何内容被保存!

该怎么办?

答案1

最有可能的是,您的 shell$1在将其传递给命令之前会进行扩展(可能为空字符串)rename。尝试在正则表达式周围使用单引号而不是双引号:

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

(此外,没有必要在替换表达式中转义点,即您可以使用$1.png代替$1\.png

相关内容