请耐心等待,这篇文章会有点长...
我有一堆文件,其中一些具有简单而干净的名称(例如 1E01.txt),而另一些则具有很多附加功能:
Sample2_Name_E01_-co_032.txt
Sample2_Name_E02_-co_035.txt
...
Sample12_Name_E01_-co_061.txt
等等。这里重要的是“Sample”后面的数字和“ Name ”后面的字母+数字——其余的都是一次性的。如果我去掉不重要的部分,文件名将减少为与“干净”文件名(2E01.txt、2E02.txt、...、12E01.txt)相同的模式。我设法用以下表达式重命名了文件(我自己想出了这个,不知道是否非常优雅但工作正常):
rename -v 's/Sample([0-9]+)_Name_([A-Z][0-9]+).*/$1$2\.txt/' *.txt
现在,第二部分是为只有一位数字的文件名添加前导零,例如 1E01.txt 变成 01E01.txt。我已经设法做到了这一点(在另一个 StackExchange 帖子中找到并修改了它):
rename -v 'unless (/^[0-9]{2}.*\.txt/) {s/^([0-9]{1}.*\.txt)$/0$1/;s/0*([0-9]{2}\..*)/$1/}' *.txt
所以我终于想到了我的问题:有没有办法在一个重命名命令中合并两个表达式?我知道我可以做一个 bash 脚本来自动化这个过程,但我想要的是找到一个一次性重命名解决方案。
谢谢