首页 > 编程知识 正文

linux编写shell脚本,linux中shell脚本编写

时间:2023-05-05 23:29:02 阅读:190420 作者:3022

在上一篇文章中,我写了批量修改文件名(在文件名中添加文字),但是在工作中也有批量修改文件名,删除文件名部分文字的需求

例如,一并变更名称,从文件名中删除多馀字符

以下目录名称如下: 必须删除_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

有几个可以实现的方法。

方法1 )结合for循环和sed,使用[ twdjqm @ localhost (] $ for file in ` ls *.jpg `; domv $ file ` echo $ file|sed ' s/_ finished//g '; 东;

方法二: ls与awk结合,输出交给bash执行[ twdjqm @ localhost~] $ ls *.jpg|awk-f ' _ finished ' { print ' mv ' $0' $1$2]

实际执行的指令如下所示。 _finished作为分隔符,mv和变量包括双引号[ twdjqm @ localhost~] $ ls *.jpg|awk-f ' _ finished ' { print ' mv ' $0' }

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改名[ twdjqm @ localhost~] $ rename ' _ finished ' ' *.jpg

方法四、for循环加变量部分剪切[ twdjqm @ localhost~] $ for file in ` ls *.jpg `; domv $ file ` echo $ { file % _ finished * }.jpg `; 东;

不用echo也可以[ twdjqm @ localhost~~ ] $ for file in ` ls *.jpg `; domv $ file $ { file % _ finished * }.jpg; 东;

变更后的结果如下

stu _ 102999 _1. jpg stu _ 102999 _2. jpg stu _ 102999 _3. jpg stu _ 102999 _4. jpg stu _ 102999 _5. jpg

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。