批量改名六大神技
shell实例1:
改名指令rename的用法如下:
[root@ChangerLee 批量改名]# touch file_{1..10}
[root@ChangerLee 批量改名]# ls
file_1 file_10 file_2 file_3 file_4 file_5 file_6 file_7 file_8 file_9
[root@ChangerLee 批量改名]# rename file config file*
[root@ChangerLee 批量改名]# ls
config_1 config_2 config_4 config_6 config_8
config_10 config_3 config_5 config_7 config_9
shell实例2:
[root@ChangerLee 批量改名]# ls
config_1 config_2 config_4 config_6 config_8 config_10 config_3 config_5 config_7 config_9
[root@ChangerLee 批量改名]# cat mulirename.sh
#!/bin/bash
#multi-change name
for i in `ls config_*`
do
mv $i `echo $i |cut -d _ -f2`.conf
done
[root@ChangerLee 批量改名]# sh mulirename.sh
[root@ChangerLee 批量改名]# ls
10.conf 1.conf 2.conf 3.conf 4.conf 5.conf 6.conf 7.conf 8.conf 9.conf mulirename.sh
shell实例3:
[root@ChangerLee 批量改名]# ls file*
file_stu2016-08-101 file_stu2016-08-103 file_stu2016-08-106 file_stu2016-08-109
file_stu2016-08-1010 file_stu2016-08-104 file_stu2016-08-107
file_stu2016-08-102 file_stu2016-08-105 file_stu2016-08-108
[root@ChangerLee 批量改名]# cat for_modifilename.sh
#!/bin/bash
#an instantiation of rename
for i in `ls file*`
do
mv $i `echo $i|sed 's/stu//g'`
done
[root@ChangerLee 批量改名]# sh for_modifilename.sh
[root@ChangerLee 批量改名]# ls file*
file_2016-08-101 file_2016-08-103 file_2016-08-106 file_2016-08-109
file_2016-08-1010 file_2016-08-104 file_2016-08-107 file_2016-08-102 file_2016-08-105 file_2016-08-108
shell实例4:
此实例利用变量中字符串的截取
[root@ChangerLee 批量改名]# touch blog.changerjjlee.net{1..10}
[root@ChangerLee 批量改名]# ls
blog.changerjjlee.net1 blog.changerjjlee.net4 blog.changerjjlee.net8
blog.changerjjlee.net10 blog.changerjjlee.net5 blog.changerjjlee.net9
blog.changerjjlee.net2 blog.changerjjlee.net6 forename.sh
blog.changerjjlee.net3 blog.changerjjlee.net7
[root@ChangerLee 批量改名]# cat forename.sh
#!/bin/bash
#an instantiation for rename
for name in `ls blog*`
do
mv $name ${name:5:18}
done
[root@ChangerLee 批量改名]# sh forename.sh
[root@ChangerLee 批量改名]# ls
changerjjlee.net1 changerjjlee.net3 changerjjlee.net6 changerjjlee.net9
changerjjlee.net10 changerjjlee.net4 changerjjlee.net7 forename.sh
changerjjlee.net2 changerjjlee.net5 changerjjlee.net8
shell实例5:
变量名中字符串的替换
[root@ChangerLee 批量改名]# ls changerjjlee.net*
changerjjlee.net1 changerjjlee.net2 changerjjlee.net4 changerjjlee.net6 changerjjlee.net8
changerjjlee.net10 changerjjlee.net3 changerjjlee.net5 changerjjlee.net7 changerjjlee.net9
[root@ChangerLee 批量改名]# cat forename.sh
#!/bin/bash
#an instantiation for rename
for name in `ls *net*`
do
mv $name ${name/changer/CHANGER}
done
[root@ChangerLee 批量改名]# sh forename.sh
[root@ChangerLee 批量改名]# ls
CHANGERjjlee.net1
CHANGERjjlee.net3
CHANGERjjlee.net6
CHANGERjjlee.net9
CHANGERjjlee.net10
CHANGERjjlee.net4
CHANGERjjlee.net7
forename.sh
CHANGERjjlee.net2
CHANGERjjlee.net5
CHANGERjjlee.net8
shell实例6:
本实例针对文件名中存在空格的改名
[root@ChangerLee Pictures]# ls S*
Screenshot from 2016-07-16 03-23-54.png
Screenshot from 2016-07-16 03-24-08.png
Screenshot from 2016-07-16 03-23-58.png
Screenshot from 2016-07-16 04-17-31.png
Screenshot from 2016-07-16 03-24-04.png
Screenshot from 2016-07-27 04-34-26.png
Screenshot from 2016-07-16 03-24-07.png
[root@ChangerLee Pictures]# ls S*|awk -F ' ' '{print "mv " $3"-"$4}'
mv 2016-07-16-03-23-54.png
mv 2016-07-16-03-23-58.png
mv 2016-07-16-03-24-04.png
mv 2016-07-16-03-24-07.png
mv 2016-07-16-03-24-08.png
mv 2016-07-16-04-17-31.png
mv 2016-07-27-04-34-26.png
[root@ChangerLee Pictures]# ls S*|awk -F ' ' '{print "mv " $0 $3"-"$4}'
mv Screenshot from 2016-07-16 03-23-54.png2016-07-16-03-23-54.png
mv Screenshot from 2016-07-16 03-23-58.png2016-07-16-03-23-58.png
mv Screenshot from 2016-07-16 03-24-04.png2016-07-16-03-24-04.png
mv Screenshot from 2016-07-16 03-24-07.png2016-07-16-03-24-07.png
mv Screenshot from 2016-07-16 03-24-08.png2016-07-16-03-24-08.png
mv Screenshot from 2016-07-16 04-17-31.png2016-07-16-04-17-31.png
mv Screenshot from 2016-07-27 04-34-26.png2016-07-27-04-34-26.png
[root@ChangerLee Pictures]# ls S*|awk -F ' ' '{print "mv " $0" "$3"-"$4}'
mv Screenshot from 2016-07-16 03-23-54.png 2016-07-16-03-23-54.png
mv Screenshot from 2016-07-16 03-23-58.png 2016-07-16-03-23-58.png
mv Screenshot from 2016-07-16 03-24-04.png 2016-07-16-03-24-04.png
mv Screenshot from 2016-07-16 03-24-07.png 2016-07-16-03-24-07.png
mv Screenshot from 2016-07-16 03-24-08.png 2016-07-16-03-24-08.png
mv Screenshot from 2016-07-16 04-17-31.png 2016-07-16-04-17-31.png
mv Screenshot from 2016-07-27 04-34-26.png 2016-07-27-04-34-26.png
[root@ChangerLee Pictures]# ls S*|awk -F ' ' '{print "mv \"" $0 " "$3"-"$4}'
mv "Screenshot from 2016-07-16 03-23-54.png 2016-07-16-03-23-54.png
mv "Screenshot from 2016-07-16 03-23-58.png 2016-07-16-03-23-58.png
mv "Screenshot from 2016-07-16 03-24-04.png 2016-07-16-03-24-04.png
mv "Screenshot from 2016-07-16 03-24-07.png 2016-07-16-03-24-07.png
mv "Screenshot from 2016-07-16 03-24-08.png 2016-07-16-03-24-08.png
mv "Screenshot from 2016-07-16 04-17-31.png 2016-07-16-04-17-31.png
mv "Screenshot from 2016-07-27 04-34-26.png 2016-07-27-04-34-26.png
[root@ChangerLee Pictures]# ls S*|awk -F ' ' '{print "mv \"" $0 "\" " $3"-"$4}'
mv "Screenshot from 2016-07-16 03-23-54.png" 2016-07-16-03-23-54.png
mv "Screenshot from 2016-07-16 03-23-58.png" 2016-07-16-03-23-58.png
mv "Screenshot from 2016-07-16 03-24-04.png" 2016-07-16-03-24-04.png
mv "Screenshot from 2016-07-16 03-24-07.png" 2016-07-16-03-24-07.png
mv "Screenshot from 2016-07-16 03-24-08.png" 2016-07-16-03-24-08.png
mv "Screenshot from 2016-07-16 04-17-31.png" 2016-07-16-04-17-31.png
mv "Screenshot from 2016-07-27 04-34-26.png" 2016-07-27-04-34-26.png
[root@ChangerLee Pictures]# ls S*|awk -F ' ' '{print "mv \"" $0 "\" " $3"-"$4}'>bash
[root@ChangerLee Pictures]# ls
2016-07-16-03-23-54.png
2016-07-16-03-24-08.png
2016-07-16-03-23-58.png
2016-07-16-04-17-31.png
forename.sh
2016-07-16-03-24-04.png
2016-07-27-04-34-26.png
2016-07-16-03-24-07.png