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
标签:shell,扩展名,文件名,161226,stu,finished,rw,jpg,root 来源: https://www.cnblogs.com/scajy/p/12762464.html