使用rename命令在第二个下划线后重命名

时间:2012-12-11 09:10:10

标签: bash renaming

我有一个名为“ABI-Data”的目录包含

等文件
10_2012-08-22_B02_014.fsa
1_2012-08-22_A01_015.fsa
11_2012-08-22_C02_012.fsa
12_2012-08-22_D02_010.fsa
14_2012-08-22_F02_006.fsa

我需要输出

abi_B02_014.fsa
abi_A01_015.fsa
abi_C02_012.fsa
abi_D02_010.fsa
abi_F02_006.fsa

简而言之,我想将所有文件重命名为第二名,分数为“abi”或任何字符。

我尝试在工作目录ABI-Data中使用rename命令作为

rename -v -n /*_*_/abi/ *.fsa

但发现错误如

Quantifier follows nothing in regex; marked by <-- HERE in m/* <-- HERE _*_/ at (eval 1) line 1.

请建议我在哪里做错了或建议使用命令/脚本/代码将所有字符砍成第二个下划线并在每个文件名中加上abi作为后缀。

2 个答案:

答案 0 :(得分:1)

我通常使用它: ReNamer - http://www.den4b.com/?x=screenshots&product=renamer

ReNamer list of functions

通常它可以完成这项工作,那里有复杂的Regex解决方案。

答案 1 :(得分:1)

您可以使用cut进行for循环以获取所需的部分:

for i in `ls ABI-Data/`; do j=`echo $i|cut -d "_" -f 3-` ; mv ABI-Data/$i ABI-Data/abi_$j ; done 

rename

rename -v  s/[^_]*_[^_]*_/abi_/ *.fsa