码迷,mamicode.com
首页 > 系统相关 > 详细

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

时间:2016-02-19 17:20:27      阅读:246      评论:0      收藏:0      [点我收藏+]

标签:linux   shell   shell编程   批量修改文件名   

shell脚本:批量修改文件名(文件名中添加字符)


上一篇写过批量修改文件名(文件名中添加字符),工作中还存在这样的需求,批量修改文件名,删除文件名中的某些字符;

举例如下:批量改名,删除文件名中多余字符

目录下文件名为如下,要求去掉_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

技术分享

方法四: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


本文出自 “模范生的学习博客” 博客,请务必保留此出处http://mofansheng.blog.51cto.com/8792265/1743432

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

标签:linux   shell   shell编程   批量修改文件名   

原文地址:http://mofansheng.blog.51cto.com/8792265/1743432

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!