shell批量修改后缀_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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值