我在脚本中犯了一个错误,把所有的空格都换成了“s”而不是下划线。我想撤消此更改。我有这样的名字:
BatmansBegins
FightsClub
ThesDeparted
TouchsOfsEvil我想把它命名为
Batman_Begins
Fight_Club
The_Departed
Touch_Of_Evil我现在有这个命令,但它会替换's‘和后面的大写字母
rename -n 's/s[A-Z]/_/g'发布于 2019-10-23 18:40:59
您需要捕获大写字母并在替换中使用反向引用。因此,请将其用作:
rename -n 's/s([A-Z])/_$1/g' *s[A-Z]*另一种选择是在正则表达式中使用正向先行:
rename -n 's/s(?=[A-Z])/_/g' *s[A-Z]*(?=[A-Z])是肯定的先行检查,它在匹配s之后断言是否存在大写字母。
PS:rename工具有相当多的变体,看起来您正在使用流行的基于perl的rename实用程序,这个答案也基于此。
https://stackoverflow.com/questions/58520939
复制相似问题