2012-08-17 203 views
0

我要重新命名200个文件 其实每个文件被命名喜欢这样的:Linux的shell脚本删除数字

00001-abcd-efgg?g............. 
00002-xcvb-vbnv?b............. 
00003-cbvc-hugh?j............. 

现在我想所有这些文件重命名这样的:

001 
002 
003 
... 

所以我需要删除前两位数字,并删除第五位数字后的所有内容。 警告:我想重命名每个文件中有一个“?”。

+2

这很好...你有没有试过这个,或者你只是想让我们为你做你的工作? – 2012-08-17 14:48:10

+1

看到这个:http://stackoverflow.com/questions/11990893/how-can-i-batch-move-a-prepended-year-to-the-end-of-a-file-name/11991049#11991049 – kev 2012-08-17 14:50:31

回答

1

使用rename

rename -nv 's,.*(\d{3}).*,$1,' * 

输出:

00001-abcd-efgg?g............. renamed as 001 
00002-xcvb-vbnv?b............. renamed as 002 
00003-cbvc-hugh?j............. renamed as 003 

取出n当你满意的输出。

4
for f in * 
do 
    mv "$f" "${f:2:3}" 
done