北大青岛_深圳嘉华_shell特殊变量演示(五)生产环境下使用变量子串

需求:批量的将系统文件中的文件名Drugs去掉。

①创建测试文件

touch 

sta_20190726_drugs.jpg 

sta_20190727_drugs.jpg 

sta_20190728_drugs.jpg 

sta_20190729_drugs.jpg 

sta_20190730_drugs.jpg 

sta_20190731_drugs.jpg

②批量删除之前需要知道单个修改文件名的方法:

[root@6 tmp]# mv sta_20190726_drugs.jpg sta_20190726_jpg 

③利用变量赋值和替换的方式实现mv命令批量改名的需求:

[root@6 tmp]# dg="sta_20190726_drugs.jpg"

[root@6 tmp]# echo ${dg//_drugs/}        

sta_20190726.jpg

[root@6 tmp]# mv $dg `echo ${dg//_drugs/}` 

如图所示:结果显示单个文件利用变量赋值和替换的方式处理掉了。

④单单处理一个是不够得,进行批量处理,利用循环语句去解决!

[root@6 tmp]# for dg in `ls *.jpg`;do mv $dg `echo ${dg//_drugs/}`;done 

如图所示:其中有一个报错不用去管他,因为之前已经改过了一个文件了,查看其他文件名已被改过来了

 

当然,还可以利用rename更高效的去解决这个需求,先创建测试文件。

[root@6 tmp]# rename "drugs" "" *.jpg

需求2:利用变量子串中替换的方法将文件中后缀名小写改为大写的后缀名

①创建多个测试文件:

[root@6 tmp]# touch {a..d}.html

②单个文件利用变量子串//替换演示:将结尾的html替换成HTML

[root@6 tmp]# echo ${HT/%html/HTML}

 

[root@6 tmp]# mv $HT ${HT/%html/HTML}

举一反三,要想替换文件名,加上#即可:

[root@6 tmp]# echo ${HT/#a/A}

 

③利用for循环,批量更改后缀名:

[root@6 tmp]# for HT in `ls *.html`;do mv $HT ${HT/%html/HTML};done 

也可用renma去解决:[root@6 tmp]# rename ".HTML" ".html" *.HTML

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

深海天哥

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值