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


1. 功能描述如下表:

  批量文件改名案例實戰:
  問題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:拓展:其他變量的替換
變量替換表:

 

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

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM