Linux中如何批量截短文件名?

批量给文件名加上某一个后缀的方法很简单

mv * *.bak

这样能把当前目录下的所有文件加上.bak后缀.可是有一次我手贱,连续把这个命令执行了很多遍,所以把目录下的文件名都搞成xxx.bak.bak.bak.bak.bak.bak.bak了,很是难看,该怎么还原呢?

当然不能手工一个一个改,于是我请强大的shell出马,写了如下一个shell脚本

#!/bin/sh

for file in *.bak
do
        short=${file%%.bak*}
        mv $file ${short}.bak
done

这样就能成功的把xxx.bak.bak.bak.bak.bak.bak.bak全都变成xxx.bak了,很强大有木有 微笑


其实关键就在于参数替换的运用,下面总结一下

${param:-default}如果param为空,整个式子的值就等于default
${#param}整个式子的值为param的长度
${param%word}从param尾部开始删除与word匹配的最小部分,返回剩余部分
${param%%word}从param尾部开始删除与word匹配的最长部分,返回剩余部分
${param#word}从param头部开始删除与word匹配的最小部分,返回剩余部分
${param##word}从param头部开始删除与word匹配的最长部分,返回剩余部分

再补充几个用法

${param:=bar}检查param是否为空,若不为空,则返回其值;否则将param赋值为bar,然后返回这个值
${param:?bar}若param为空或不存在,则输出param:bar并异常终止脚本
${param:+bar}param存在且不为空的情况下才返回param,否则返回空(貌似bar在这里没用)



  • 参考资料: 《Linux 程序设计》

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值