我正在尝试使用rename
命令重命名文件夹中的一堆图像。
我有这个图片列表,
image.php?x=10
image.php?x=25
image.php?x=50
image.php?x=75
我正在尝试使用以下正则表达式将它们重命名为10.png
等25.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
)