重命名正则表达式无法重命名文件

重命名正则表达式无法重命名文件

我有一堆图像,比如1.jpg 2.PNG 3.gif 4.jpeg目录中的图像。我想将它们全部重命名为1-s.jpg 2-s.PNG 3-s.gif 4-s.jpeg

我尝试运行这些命令,但它对目录中的文件没有影响:

rename 's/^(\d+)\.(.*)/$1-s.$2/' .
rename 's/^(\d+)\.(.+)/$1-s.$2/' .
rename 's/.*\.(.+)/$1-s.$2/' .

我做错了什么?

答案1

使用通配符*作为文件名:

rename 's/^(\d+)\.(.*)/$1-s.$2/' *

你可以简化一点:

rename 's/^(\d+)(?=\.)/$1-s/' *

其中,(?=\.)正向前瞻确保数字后面有一个点,但不捕获它。

相关内容