重命名正则表达式中的Bash变量

时间:2018-04-24 14:17:58

标签: regex bash rename batch-rename

我正在编写一个bash脚本来重命名文件名并使用命令

rename 's/\d+/sprintf("%02d", $&)/e' *

但是想用“%0”$ var“d”替换“%02d”,从而用$ var替换“2”,但似乎它不起作用而且我不熟悉正则表达式以及如何使用escape \并希望得到帮助

2 个答案:

答案 0 :(得分:3)

当然,您的整个表达式都在单引号内,不执行扩展。要展开命令的一部分,请将其移出引号:

rename 's/\d+/sprintf("%0'"$var"'d", $&)/e' *

或者将整个表达式用双引号括起来,但是你需要逃避更多:

rename "s/\\d+/sprintf(\"%0${var}d\", \$&)/e" *

答案 1 :(得分:0)

您也可以通过环境传递值

env var=5 rename 's/\d+/sprintf("%0$ENV{var}d", $&)/e' *