shell腳本:批量修改文件名(刪除文件名中字符)

shell腳本:批量修改文件名(刪除文件名中字符)

像教授 2017-11-26 20:35:00 瀏覽336 評論0

摘要: 上一篇寫過批量修改文件名(文件名中添加字符),工作中還存在這樣的需求,批量修改文件名,刪除文件名中的某些字符; 舉例如下:批量改名,刪除文件名中多餘字符 目錄下文件名爲如下,要求去掉_finished。

上一篇寫過批量修改文件名(文件名中添加字符),工作中還存在這樣的需求,批量修改文件名,刪除文件名中的某些字符;

舉例如下:批量改名,刪除文件名中多餘字符

目錄下文件名爲如下,要求去掉_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循環結合sed替換

[baby@localhost ~]$ for file in `ls *.jpg`;do mv $file `echo $file|sed 's/_finished//g'`;done;

 

方法二:ls結合awk,輸出交給bash執行

[baby@localhost ~]$ ls *.jpg |awk -F "_finished" '{print "mv "$0" "$1$2""}'|bash

 

實際執行的命令如下,以_finished作爲分隔符,mv及變量 需要加雙引號

[baby@localhost ~]$ ls *.jpg |awk -F "_finished" '{print "mv "$0" "$1$2""}'
mv stu_102999_1_finished.jpg stu_102999_1.jpg
mv stu_102999_2_finished.jpg stu_102999_2.jpg
mv stu_102999_3_finished.jpg stu_102999_3.jpg
mv stu_102999_4_finished.jpg stu_102999_4.jpg
mv stu_102999_5_finished.jpg stu_102999_5.jpg

 

方法三:rename改名

[baby@localhost ~]$ rename "_finished" "" *.jpg

spacer.gif

方法四:for循環加變量部分截取

[baby@localhost ~]$ for file in `ls *.jpg`;do mv $file `echo ${file%_finished*}.jpg`;done;

不使用echo也可以實現

[baby@localhost ~]$ for file in `ls *.jpg`;do mv $file ${file%_finished*}.jpg;done;

更改後結果如下:

stu_102999_1.jpg
stu_102999_2.jpg
stu_102999_3.jpg
stu_102999_4.jpg
stu_102999_5.jpg

 

本文轉自 模範生 51CTO博客,原文鏈接:http://blog.51cto.com/mofansheng/1743432,如需轉載請自行聯繫原作者

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章