shell-批量修改文件名及扩展名多案例

1. 功能描述如下表:

shell-批量修改文件名及扩展名多案例

  批量文件改名案例实战:
  问题1:
  创建测试数据

[root@1-241 tmp]# for i in `seq 6`;do touch stu_161226_${i}_finished.jpg;done 
[root@1-241 tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_1_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_2_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_3_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_4_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_5_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:35 stu_161226_6_finished.jpg

  开始修改

[root@1-241 tmp]# for i in `ls *.jpg`;do mv "$i" "${i%finished*}.jpg"; done
[root@1-241 tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_1_.jpg
-rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_2_.jpg
-rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_3_.jpg
-rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_4_.jpg
-rw-r--r--. 1 root root 0 12月 23 16:44 stu_161226_5_.jpg

2. 功能描述

   问题2:把下面文件的jpg变成html扩展名:
   创建测试数据

[root@1-241 tmp]# touch stu_161226_{1..6}_finished.jpg 
[root@1-241 tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_1_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_2_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_3_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_4_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_5_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_6_finished.jpg

   开始修改

[root@1-241 tmp]# for i in `ls *.jpg`; do mv $i ${i/%jpg/html}; done 

[root@1-241 tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_1_finished.html
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_2_finished.html
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_3_finished.html
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_4_finished.html
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_5_finished.html
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_6_finished.html

3. 小结:

mv $i ${i%.jpg}.html
mv $i `echo $i |sed 's/jpg/html/g'`
mv $i `echo "${i/%jpg/html}"`

4. 利用awk处理

[root@1-241 tmp]# ls *.jpg
stu_161226_1_finished.jpg stu_161226_3_finished.jpg stu_161226_5_finished.jpg
stu_161226_2_finished.jpg stu_161226_4_finished.jpg stu_161226_6_finished.jpg
[root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print $0}' stu_161226_1_finished.jpg stu_161226_2_finished.jpg stu_161226_3_finished.jpg stu_161226_4_finished.jpg stu_161226_5_finished.jpg stu_161226_6_finished.jpg
[root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print $0,$1 }' stu_161226_1_finished.jpg stu_161226_1_ stu_161226_2_finished.jpg stu_161226_2_ stu_161226_3_finished.jpg stu_161226_3_ stu_161226_4_finished.jpg stu_161226_4_ stu_161226_5_finished.jpg stu_161226_5_ stu_161226_6_finished.jpg stu_161226_6_
[root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print $0,$1$2 }' stu_161226_1_finished.jpg stu_161226_1_.jpg stu_161226_2_finished.jpg stu_161226_2_.jpg stu_161226_3_finished.jpg stu_161226_3_.jpg stu_161226_4_finished.jpg stu_161226_4_.jpg stu_161226_5_finished.jpg stu_161226_5_.jpg stu_161226_6_finished.jpg stu_161226_6_.jpg
[root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print "mv " $0,$1$2}' mv stu_161226_1_finished.jpg stu_161226_1_.jpg mv stu_161226_2_finished.jpg stu_161226_2_.jpg mv stu_161226_3_finished.jpg stu_161226_3_.jpg mv stu_161226_4_finished.jpg stu_161226_4_.jpg mv stu_161226_5_finished.jpg stu_161226_5_.jpg mv stu_161226_6_finished.jpg stu_161226_6_.jpg
[root@1-241 tmp]# ls *.jpg |awk -F "finished" '{print "mv " $0,$1$2}' |bash [root@1-241 tmp]# ll 总用量 0 -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_1_.jpg -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_2_.jpg -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_3_.jpg -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_4_.jpg -rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_5_.jpg -rw-r--r--. 1 rootrm root 0 12月 23 16:53 stu_161226_6_.jpg

5. 利用rename更改

[root@1-241 tmp]# touch stu_161226_{1..6}_finished.jpg 
[root@1-241 tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_1_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_2_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_3_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_4_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_5_finished.jpg
-rw-r--r--. 1 root root 0 12月 23 16:53 stu_161226_6_finished.jpg
[root@1-241 tmp]# rename "finished" "" *.jpg
[root@1-241 tmp]# ll
总用量 0
-rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_1_.jpg
-rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_2_.jpg
-rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_3_.jpg
-rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_4_.jpg
-rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_5_.jpg
-rw-r--r--. 1 root root 0 12月 23 17:42 stu_161226_6_.jpg

6:拓展:其他变量的替换
变量替换表:

 shell-批量修改文件名及扩展名多案例

7. 下面依次举例说明:
1、${value:-word} 当变量未定义或者值为空时,返回值为word内容,否则返回变量的值
举例:

[root@1-241 ~]# aa=${bb:-word}
[root@1-241 ~]# echo $bb
==>这里是空
[root@1-241 ~]# echo $aa
word

8. ${value:=word}

与前者类似,只是若变量未定义或者值为空时,在返回word的值得同时将word赋值给value

[root@1-241 ~]# aa=${bb:=word}
[root@1-241 ~]# echo $bb
word
[root@1-241 ~]# echo $aa
word

  

 
上一篇:Scrum Meeting #3 2020/04/11


下一篇:Scrum Meeting #4 2020/04/12