批量改名

源文件名

[root@centos1 xiaoming]# for n in `seq 10`;do  touch lvnian_`date +%Y%m$d`_${n}_finished.jpg ;done

[root@centos1 xiaoming]# ls

lvnian_201508_10_finished.jpg  lvnian_201508_3_finished.jpg  lvnian_201508_6_finished.jpg  lvnian_201508_9_finished.jpg

lvnian_201508_1_finished.jpg   lvnian_201508_4_finished.jpg  lvnian_201508_7_finished.jpg

lvnian_201508_2_finished.jpg   lvnian_201508_5_finished.jpg  lvnian_201508_8_finished.jpg

[root@centos1 xiaoming]# 


1、把源文件改为不包含_finished字符的文件

方法1、利用 ${string%substring}从变量$string的结尾,删除最短匹配$substring的子串 

[root@centos1 xiaoming]# for n in `ls `;do mv  $n  `echo ${n%_finished.jpg}.jpg` ;done

[root@centos1 xiaoming]# ls

lvnian_201508_10.jpg  lvnian_201508_2.jpg  lvnian_201508_4.jpg  lvnian_201508_6.jpg  lvnian_201508_8.jpg

lvnian_201508_1.jpg   lvnian_201508_3.jpg  lvnian_201508_5.jpg  lvnian_201508_7.jpg  lvnian_201508_9.jpg

[root@centos1 xiaoming]#

方法2、利用awk

[root@centos1 xiaoming]# rm -rf *

[root@centos1 xiaoming]# 

[root@centos1 xiaoming]# 

[root@centos1 xiaoming]# for n in `seq 10`;do  touch lvnian_`date +%Y%m$d`_${n}_finished.jpg ;done

[root@centos1 xiaoming]# ls

lvnian_201508_10_finished.jpg  lvnian_201508_3_finished.jpg  lvnian_201508_6_finished.jpg  lvnian_201508_9_finished.jpg

lvnian_201508_1_finished.jpg   lvnian_201508_4_finished.jpg  lvnian_201508_7_finished.jpg

lvnian_201508_2_finished.jpg   lvnian_201508_5_finished.jpg  lvnian_201508_8_finished.jpg

[root@centos1 xiaoming]# for n in `ls `;do mv  $n  `echo $n|awk -F'_finished' '{print $1 $2}'` ;done 

[root@centos1 xiaoming]# ls

lvnian_201508_10.jpg  lvnian_201508_2.jpg  lvnian_201508_4.jpg  lvnian_201508_6.jpg  lvnian_201508_8.jpg

lvnian_201508_1.jpg   lvnian_201508_3.jpg  lvnian_201508_5.jpg  lvnian_201508_7.jpg  lvnian_201508_9.jpg

[root@centos1 xiaoming]# 

方法3、利用sed

[root@centos1 xiaoming]# rm -rf *

[root@centos1 xiaoming]# for n in `seq 10`;do  touch lvnian_`date +%Y%m$d`_${n}_finished.jpg ;done

[root@centos1 xiaoming]# ls

lvnian_201508_10_finished.jpg  lvnian_201508_3_finished.jpg  lvnian_201508_6_finished.jpg  lvnian_201508_9_finished.jpg

lvnian_201508_1_finished.jpg   lvnian_201508_4_finished.jpg  lvnian_201508_7_finished.jpg

lvnian_201508_2_finished.jpg   lvnian_201508_5_finished.jpg  lvnian_201508_8_finished.jpg

[root@centos1 xiaoming]# for n in `ls `;do mv  $n  `echo $n|sed -n 's/_finished//'gp` ;done  

[root@centos1 xiaoming]# ls

lvnian_201508_10.jpg  lvnian_201508_2.jpg  lvnian_201508_4.jpg  lvnian_201508_6.jpg  lvnian_201508_8.jpg

lvnian_201508_1.jpg   lvnian_201508_3.jpg  lvnian_201508_5.jpg  lvnian_201508_7.jpg  lvnian_201508_9.jpg

[root@centos1 xiaoming]#

方法4、rename

[root@centos1 xiaoming]# for n in `seq 10`;do  touch lvnian_`date +%Y%m$d`_${n}_finished.jpg ;done

[root@centos1 xiaoming]# ls

lvnian_201508_10_finished.jpg  lvnian_201508_3_finished.jpg  lvnian_201508_6_finished.jpg  lvnian_201508_9_finished.jpg

lvnian_201508_1_finished.jpg   lvnian_201508_4_finished.jpg  lvnian_201508_7_finished.jpg

lvnian_201508_2_finished.jpg   lvnian_201508_5_finished.jpg  lvnian_201508_8_finished.jpg

[root@centos1 xiaoming]# rename _finished  "" *

[root@centos1 xiaoming]# ls

lvnian_201508_10.jpg  lvnian_201508_2.jpg  lvnian_201508_4.jpg  lvnian_201508_6.jpg  lvnian_201508_8.jpg

lvnian_201508_1.jpg   lvnian_201508_3.jpg  lvnian_201508_5.jpg  lvnian_201508_7.jpg  lvnian_201508_9.jpg

[root@centos1 xiaoming]# 

##################################################################################

2、把源文件改为不包含lvnian_字符的文件


方法1、利用${string#substring}  从变量$string的开头,删除最短匹配$substring的子串 

[root@centos1 xiaoming]# for n in `seq 10`;do  touch lvnian_`date +%Y%m$d`_${n}_finished.jpg ;done

[root@centos1 xiaoming]# ls

lvnian_201508_10_finished.jpg  lvnian_201508_3_finished.jpg  lvnian_201508_6_finished.jpg  lvnian_201508_9_finished.jpg

lvnian_201508_1_finished.jpg   lvnian_201508_4_finished.jpg  lvnian_201508_7_finished.jpg

lvnian_201508_2_finished.jpg   lvnian_201508_5_finished.jpg  lvnian_201508_8_finished.jpg

[root@centos1 xiaoming]# for n in `ls `;do mv  $n  `echo ${n#lvnian_}` ;done

[root@centos1 xiaoming]# ls

201508_10_finished.jpg  201508_2_finished.jpg  201508_4_finished.jpg  201508_6_finished.jpg  201508_8_finished.jpg

201508_1_finished.jpg   201508_3_finished.jpg  201508_5_finished.jpg  201508_7_finished.jpg  201508_9_finished.jpg

[root@centos1 xiaoming]# 

########################

方法2.sed

[root@centos1 xiaoming]# for n in `seq 10`;do  touch lvnian_`date +%Y%m$d`_${n}_finished.jpg ;done

[root@centos1 xiaoming]# ls

lvnian_201508_10_finished.jpg  lvnian_201508_3_finished.jpg  lvnian_201508_6_finished.jpg  lvnian_201508_9_finished.jpg

lvnian_201508_1_finished.jpg   lvnian_201508_4_finished.jpg  lvnian_201508_7_finished.jpg

lvnian_201508_2_finished.jpg   lvnian_201508_5_finished.jpg  lvnian_201508_8_finished.jpg

[root@centos1 xiaoming]# for n in `ls `;do mv  $n  `echo $n|sed -n 's/lvnian_//gp'` ;done              

[root@centos1 xiaoming]# ls

201508_10_finished.jpg  201508_2_finished.jpg  201508_4_finished.jpg  201508_6_finished.jpg  201508_8_finished.jpg

201508_1_finished.jpg   201508_3_finished.jpg  201508_5_finished.jpg  201508_7_finished.jpg  201508_9_finished.jpg

[root@centos1 xiaoming]#


方法3.awk

[root@centos1 xiaoming]# for n in `seq 10`;do  touch lvnian_`date +%Y%m$d`_${n}_finished.jpg ;done

[root@centos1 xiaoming]# ls

lvnian_201508_10_finished.jpg  lvnian_201508_3_finished.jpg  lvnian_201508_6_finished.jpg  lvnian_201508_9_finished.jpg

lvnian_201508_1_finished.jpg   lvnian_201508_4_finished.jpg  lvnian_201508_7_finished.jpg

lvnian_201508_2_finished.jpg   lvnian_201508_5_finished.jpg  lvnian_201508_8_finished.jpg

[root@centos1 xiaoming]# for n in `ls `;do mv  $n  `echo $n|awk -F'lvnian_' '{print $2}' ` ;done                          

[root@centos1 xiaoming]# ls

201508_10_finished.jpg  201508_2_finished.jpg  201508_4_finished.jpg  201508_6_finished.jpg  201508_8_finished.jpg

201508_1_finished.jpg   201508_3_finished.jpg  201508_5_finished.jpg  201508_7_finished.jpg  201508_9_finished.jpg

[root@centos1 xiaoming]# 


方法4、rename

[root@centos1 xiaoming]# rename "lvnian_" "" *

[root@centos1 xiaoming]# ls

201508_10_finished.jpg  201508_2_finished.jpg  201508_4_finished.jpg  201508_6_finished.jpg  201508_8_finished.jpg

201508_1_finished.jpg   201508_3_finished.jpg  201508_5_finished.jpg  201508_7_finished.jpg  201508_9_finished.jpg

[root@centos1 xiaoming]#

##################################################################################

2、把源文件中的finished改为包含xiaogao字符的文件


方法1、利用${string/substring/replacement}使用$replacement,来代替第一个匹配的$substring

[root@centos1 xiaoming]# for n in `seq 10`;do  touch lvnian_`date +%Y%m$d`_${n}_finished.jpg ;done

[root@centos1 xiaoming]# ls

lvnian_201508_10_finished.jpg  lvnian_201508_3_finished.jpg  lvnian_201508_6_finished.jpg  lvnian_201508_9_finished.jpg

lvnian_201508_1_finished.jpg   lvnian_201508_4_finished.jpg  lvnian_201508_7_finished.jpg

lvnian_201508_2_finished.jpg   lvnian_201508_5_finished.jpg  lvnian_201508_8_finished.jpg

[root@centos1 xiaoming]# for n in `ls `;do mv  $n  `echo ${n/finished/xiaogao} ` ;done                                   

[root@centos1 xiaoming]# ls

lvnian_201508_10_xiaogao.jpg  lvnian_201508_3_xiaogao.jpg  lvnian_201508_6_xiaogao.jpg  lvnian_201508_9_xiaogao.jpg

lvnian_201508_1_xiaogao.jpg   lvnian_201508_4_xiaogao.jpg  lvnian_201508_7_xiaogao.jpg

lvnian_201508_2_xiaogao.jpg   lvnian_201508_5_xiaogao.jpg  lvnian_201508_8_xiaogao.jpg

[root@centos1 xiaoming]# 


方法2 sed

[root@centos1 xiaoming]# for n in `seq 10`;do  touch lvnian_`date +%Y%m$d`_${n}_finished.jpg ;done

[root@centos1 xiaoming]# ls

lvnian_201508_10_finished.jpg  lvnian_201508_3_finished.jpg  lvnian_201508_6_finished.jpg  lvnian_201508_9_finished.jpg

lvnian_201508_1_finished.jpg   lvnian_201508_4_finished.jpg  lvnian_201508_7_finished.jpg

lvnian_201508_2_finished.jpg   lvnian_201508_5_finished.jpg  lvnian_201508_8_finished.jpg

[root@centos1 xiaoming]# for n in `ls `;do mv  $n  `echo $n|sed -n 's/finished/xiaogao/gp'` ;done

[root@centos1 xiaoming]# ls

lvnian_201508_10_xiaogao.jpg  lvnian_201508_3_xiaogao.jpg  lvnian_201508_6_xiaogao.jpg  lvnian_201508_9_xiaogao.jpg

lvnian_201508_1_xiaogao.jpg   lvnian_201508_4_xiaogao.jpg  lvnian_201508_7_xiaogao.jpg

lvnian_201508_2_xiaogao.jpg   lvnian_201508_5_xiaogao.jpg  lvnian_201508_8_xiaogao.jpg

[root@centos1 xiaoming]#


方法3、awk

[root@centos1 xiaoming]# rm -rf *

[root@centos1 xiaoming]# for n in `seq 10`;do  touch lvnian_`date +%Y%m$d`_${n}_finished.jpg ;done

[root@centos1 xiaoming]# ls

lvnian_201508_10_finished.jpg  lvnian_201508_3_finished.jpg  lvnian_201508_6_finished.jpg  lvnian_201508_9_finished.jpg

lvnian_201508_1_finished.jpg   lvnian_201508_4_finished.jpg  lvnian_201508_7_finished.jpg

lvnian_201508_2_finished.jpg   lvnian_201508_5_finished.jpg  lvnian_201508_8_finished.jpg

[root@centos1 xiaoming]# for n in `ls `;do mv  $n  `echo $n|awk -F'finished' '{print $1 "xiaogao" $2}' ` ;done        

[root@centos1 xiaoming]# ls

lvnian_201508_10_xiaogao.jpg  lvnian_201508_3_xiaogao.jpg  lvnian_201508_6_xiaogao.jpg  lvnian_201508_9_xiaogao.jpg

lvnian_201508_1_xiaogao.jpg   lvnian_201508_4_xiaogao.jpg  lvnian_201508_7_xiaogao.jpg

lvnian_201508_2_xiaogao.jpg   lvnian_201508_5_xiaogao.jpg  lvnian_201508_8_xiaogao.jpg

[root@centos1 xiaoming]# 


方法4、rename

[root@centos1 xiaoming]# for n in `seq 10`;do  touch lvnian_`date +%Y%m$d`_${n}_finished.jpg ;done

[root@centos1 xiaoming]# ls

lvnian_201508_10_finished.jpg  lvnian_201508_3_finished.jpg  lvnian_201508_6_finished.jpg  lvnian_201508_9_finished.jpg

lvnian_201508_1_finished.jpg   lvnian_201508_4_finished.jpg  lvnian_201508_7_finished.jpg

lvnian_201508_2_finished.jpg   lvnian_201508_5_finished.jpg  lvnian_201508_8_finished.jpg

[root@centos1 xiaoming]# rename finished xiaogao *

[root@centos1 xiaoming]# ls

lvnian_201508_10_xiaogao.jpg  lvnian_201508_3_xiaogao.jpg  lvnian_201508_6_xiaogao.jpg  lvnian_201508_9_xiaogao.jpg

lvnian_201508_1_xiaogao.jpg   lvnian_201508_4_xiaogao.jpg  lvnian_201508_7_xiaogao.jpg

lvnian_201508_2_xiaogao.jpg   lvnian_201508_5_xiaogao.jpg  lvnian_201508_8_xiaogao.jpg

[root@centos1 xiaoming]#