批量修改文件名

批量修改文件名:将_finished去掉:
stu_102999_1_finished.jpg
stu_102999_2_finished.jpg
stu_102999_3_finished.jpg
stu_102999_4_finished.jpg
stu_102999_5_finished.jpg

第一种方法:for循环
思路:首先在命令行处理一个文件,将处理好的结果写到for循环中。

 1 [root@mysql oldboy]# file=stu_102999_1_finished.jpg
 2 [root@mysql oldboy]# echo $file|sed 's#_finished##g' 
 3 stu_102999_1.jpg
 4 [root@mysql oldboy]# mv $file `echo $file|sed 's#_finished##g'`
 5 [root@mysql oldboy]# ll
 6 总用量 0
 7 -rw-r--r-- 1 root root 0 12月 21 23:38 stu_102999_1.jpg
 8 [root@mysql oldboy]# vim for2.sh
 9 #!/bin/bash
10 for file in `ls *.jpg`
11 do
12   mv $file `echo $file|sed 's#_finished##g'`
13 done
14 [root@mysql oldboy]# sh for2.sh 
15 mv: "stu_102999_1.jpg""stu_102999_1.jpg" 为同一文件
16 [root@mysql oldboy]# ll
17 总用量 4
18 -rw-r--r-- 1 root root 88 12月 21 23:41 for2.sh
19 -rw-r--r-- 1 root root  0 12月 21 23:38 stu_102999_1.jpg
20 -rw-r--r-- 1 root root  0 12月 21 23:35 stu_102999_2.jpg
21 -rw-r--r-- 1 root root  0 12月 21 23:35 stu_102999_3.jpg
22 -rw-r--r-- 1 root root  0 12月 21 23:35 stu_102999_4.jpg
23 -rw-r--r-- 1 root root  0 12月 21 23:35 stu_102999_5.jpg

第二种方法:使用awk处理
思路:将需要处理的内容拼接好,然后交给bash处理

 1 [root@mysql ~]# ls  *.jpg|awk -F "_finished" '{print $0 " " $1$2}'    
 2 stu_102999_1_finished.jpg stu_102999_1.jpg
 3 stu_102999_2_finished.jpg stu_102999_2.jpg
 4 stu_102999_3_finished.jpg stu_102999_3.jpg
 5 stu_102999_4_finished.jpg stu_102999_4.jpg
 6 stu_102999_5_finished.jpg stu_102999_5.jpg
 7 [root@mysql ~]# ls  *.jpg|awk -F "_finished" '{print "mv " $0 " " $1$2}'
 8 mv stu_102999_1_finished.jpg stu_102999_1.jpg
 9 mv stu_102999_2_finished.jpg stu_102999_2.jpg
10 mv stu_102999_3_finished.jpg stu_102999_3.jpg
11 mv stu_102999_4_finished.jpg stu_102999_4.jpg
12 mv stu_102999_5_finished.jpg stu_102999_5.jpg
13 [root@mysql ~]# ls  *.jpg|awk -F "_finished" '{print "mv " $0 " " $1$2}'|bash
14 [root@mysql ~]# ls -l *.jpg
15 -rw-r--r-- 1 root root 0 12月 21 23:22 stu_102999_1.jpg
16 -rw-r--r-- 1 root root 0 12月 21 23:22 stu_102999_2.jpg
17 -rw-r--r-- 1 root root 0 12月 21 23:22 stu_102999_3.jpg
18 -rw-r--r-- 1 root root 0 12月 21 23:22 stu_102999_4.jpg
19 -rw-r--r-- 1 root root 0 12月 21 23:22 stu_102999_5.jpg

第三种方法:使用rename,更专业。
思路:rename在修改文件名时,最专业。rename from to file

 1 [root@mysql oldboy]# ll
 2 总用量 4
 3 -rw-r--r-- 1 root root 88 12月 21 23:41 for2.sh
 4 -rw-r--r-- 1 root root  0 12月 21 23:48 stu_102999_1_finished.jpg
 5 -rw-r--r-- 1 root root  0 12月 21 23:48 stu_102999_2_finished.jpg
 6 -rw-r--r-- 1 root root  0 12月 21 23:48 stu_102999_3_finished.jpg
 7 -rw-r--r-- 1 root root  0 12月 21 23:48 stu_102999_4_finished.jpg
 8 -rw-r--r-- 1 root root  0 12月 21 23:48 stu_102999_5_finished.jpg
 9 [root@mysql oldboy]# rename "_finished" "" *.jpg
10 [root@mysql oldboy]# ll
11 总用量 4
12 -rw-r--r-- 1 root root 88 12月 21 23:41 for2.sh
13 -rw-r--r-- 1 root root  0 12月 21 23:48 stu_102999_1.jpg
14 -rw-r--r-- 1 root root  0 12月 21 23:48 stu_102999_2.jpg
15 -rw-r--r-- 1 root root  0 12月 21 23:48 stu_102999_3.jpg
16 -rw-r--r-- 1 root root  0 12月 21 23:48 stu_102999_4.jpg
17 -rw-r--r-- 1 root root  0 12月 21 23:48 stu_102999_5.jpg
原文地址:https://www.cnblogs.com/mrwang1101/p/5065344.html