使用捕获组和其他变量重命名

使用捕获组和其他变量重命名

在此问题我知道我们只能使用单引号在重命名命令中引用捕获的组。

有没有办法在同一个重命名命令中同时使用捕获组和其他变量?

例子:

var="-old_file"
cd /etc
rename 's/(bash\.bashrc)/$1$var/' *

答案1

您可以$1用单引号或$var双引号引起来:

$ rename -n 's/(bash\.bashrc)/$1'"$var"/ *
rename(bash.bashrc, bash.bashrc-old_file)

或者

$ rename -n 's/(bash\.bashrc)/$1'"$var"'/' *
rename(bash.bashrc, bash.bashrc-old_file)

或者将整个表达式括在双引号中,并使用反斜杠转义$1以防止它被 shell 扩展:

$ rename -n "s/(bash\.bashrc)/\$1$var/" *
rename(bash.bashrc, bash.bashrc-old_file)

相关内容