假设我有五个mp3文件:
01-trackfoo.mp3
02-trackbar.mp3
03-trackbaz.mp3
04-trackabc.mp3
05-trackxyz.mp3
现在,我快速聆听文件(只需在控制台上的mplayer就能解决问题),然后发现音轨顺序错误。05实际上是02,其余的将不得不重命名。所以首先我将进行临时重命名:
01-trackfoo.mp3
02-trackbar.mp3
03-trackbaz.mp3
04-trackabc.mp3
00-trackxyz.mp3
现在我们需要一个“移位”:02应该变成03,03应该变成04,04应该变成05。为了最大程度地减少混乱,将mv
稍后编辑ex-05(现在为00)。
我的方法是这样的:(perl rename
,由Larry Wall提供,默认为Debian)
rename 's/0([2-4])([\s\S]+)/0($1+1)$2/' *
以及(之后再进行一些RTFM操作)
rename 's/0([2-4])([\s\S]+)/0($1+1)$2/e' *
它们都/e[val]
不起作用,特别是因为修饰符除了求值以外不接受其他任何东西,并且一旦您尝试将求值与字符串结合起来就会抛出错误。该bash
能做到这一点就好了,例如, foo$((1+6))
将被评估到foo7
。
那么,我该怎么做(首选单行代码,不打算为此编写整个独立脚本)?