Bash 重命名正则表达式中的变量
Bash variable in rename regex
我正在编写 bash 脚本来重命名文件名并使用命令
rename 's/\d+/sprintf("%02d", $&)/e' *
但想用类似“%0”$var"d" 的东西替换“%02d”,从而用 $var 替换“2”,但它似乎不起作用,我也不是精通正则表达式以及如何使用转义 \ 并希望得到帮助
当然,您的整个表达式都在单引号内,没有进行扩展。要扩展命令的一部分,请将其移出引号:
rename 's/\d+/sprintf("%0'"$var"'d", $&)/e' *
或者将整个表达式放在双引号中,但是你需要转义更多:
rename "s/\d+/sprintf(\"%0${var}d\", $&)/e" *
您也可以通过环境传递值
env var=5 rename 's/\d+/sprintf("%0$ENV{var}d", $&)/e' *
我正在编写 bash 脚本来重命名文件名并使用命令
rename 's/\d+/sprintf("%02d", $&)/e' *
但想用类似“%0”$var"d" 的东西替换“%02d”,从而用 $var 替换“2”,但它似乎不起作用,我也不是精通正则表达式以及如何使用转义 \ 并希望得到帮助
当然,您的整个表达式都在单引号内,没有进行扩展。要扩展命令的一部分,请将其移出引号:
rename 's/\d+/sprintf("%0'"$var"'d", $&)/e' *
或者将整个表达式放在双引号中,但是你需要转义更多:
rename "s/\d+/sprintf(\"%0${var}d\", $&)/e" *
您也可以通过环境传递值
env var=5 rename 's/\d+/sprintf("%0$ENV{var}d", $&)/e' *