2012-10-12 68 views
0

我在一个目录中有一堆文件。我需要将其中的部分名称全部重命名。实例:unix命令重命名一组文件并取出部分名称

老:

64sdfdf2_test.txt363qww6.dat.z 
64cvxc65_test.txt36ntg44.dat.z 
6jtyjj54_test.txt3as3463.dat.z 

新:

64sdfdf2363qww6.dat.z 
64cvxc6536ntg44.dat.z 
6jtyjj543as3463.dat.z 

注: “_test.txt” 正是我所需要去除,它是在所有文件相同。

+0

检查这里:HTTP://theunixshell.blogspot.com/2013/01/bulk-renaming-of-files-in -unix.html – Vijay

回答

2
for i in *_test.txt* 
do 
new_name=`echo $i|sed 's/\(.*\)_test.txt\(.*\)/\1\2/g' 
mv $i $new_name 
done 

我只测试了SED部分,其做工精细:

> echo "64sdfdf2_test.txt363qww6.dat.z" | sed 's/\(.*\)_test.txt\(.*\)/\1\2/g' 
64sdfdf2363qww6.dat.z 
0

请参阅mmv的联机帮助页。像

mmv '*_test.txt*' '#1#2' 

应该做的伎俩。