我正在编写一个bash脚本来重命名文件名并使用命令
rename 's/\d+/sprintf("%02d", $&)/e' *
但是想用“%0”$ var“d”替换“%02d”,从而用$ var替换“2”,但似乎它不起作用而且我不熟悉正则表达式以及如何使用escape \并希望得到帮助
答案 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' *