\1 最好写成 $1 警告,但 $1 不起作用

\1 最好写成 $1 警告,但 $1 不起作用

我想将包含“文本名称 [1].m4a”之类的文件重命名为“文本名称 [01].m4a”。

一开始,我写道:

rename -n "s/\[(\d)\]/\[0$1\]/" *.m4a

该命令[0]改为显示[01].如果我替换$1\1,它会按预期工作。

rename -n "s/\[(\d)\]/\[0\1\]/" *.m4a

但有警告\1 better written as $1 at (eval 5) line 1. 为什么第一个命令不起作用,我该如何重写它?

我正在使用File::Rename version 0.20Ubuntu 18.04.4 LTS.

答案1

在 中"...$1...",带双引号,shell 替换$1为值它是(shell 的)变量,在将字符串传递给 之前该变量为空rename。因此rename只能看到[0]并相应地执行替换。

要使 shell$1按字面意思传递给rename,请使用单引号而不是双引号(正如 Freddy 提到的,您也不需要转义替换字符串中的括号)。

相关内容