为什么这个 perl 正则表达式不捕获反向引用?

为什么这个 perl 正则表达式不捕获反向引用?

我有一个文件目录

$ ls -1
ep2.mp4
ep3.mp4
ep4.mp4
ep5.mp4
ep6.mp4
ep7.mp4

我想使用 perlrename实用程序使所有文件看起来像例如

ep02.mp4 

我正在使用的命令

rename -n "s/([0-9])/0${1}/" *.mp4

当前结果

ep2.mp4 renamed as ep0.mp4
ep3.mp4 renamed as ep0.mp4
ep4.mp4 renamed as ep0.mp4
ep5.mp4 renamed as ep0.mp4
ep6.mp4 renamed as ep0.mp4
ep7.mp4 renamed as ep0.mp4

如何捕获原始数字并将其插入到新文件名中?

答案1

\在替换语句周围使用单引号(或转义),否则 shell 将视为${1}变量。

因此你可以这样做:

rename -n 's/([0-9])/0${1}/' *.mp4

或者

rename -n "s/([0-9])/0\${1}/" *.mp4

相关内容