这个shell脚本如何写

[复制链接]
 楼主| limee 发表于 2019-6-29 13:55 | 显示全部楼层 |阅读模式
本帖最后由 limee 于 2019-6-29 13:56 编辑

目录下有file1.jpg,file2.jpg,file3.jpg还有很多file1-.jpg,
file2-.jpg,file-.jpg......

如何把没有-的jpg删除,然后把有-号的文件名去除-号?

for file in 'ls|grep.jpg'do
   newfile = echo $file|sed's/-//g'   
    mv $file $newfile
done
我只完成了第2条,第1条应该怎么做?



john_lee 发表于 2019-6-29 14:56 | 显示全部楼层
本帖最后由 john_lee 于 2019-6-29 15:00 编辑
  1. #!/bin/bash
  2. rm *[!-].jpg
  3. for jpg in *[-].jpg; do
  4.         mv ${jpg} ${jpg:0:-5}.jpg
  5. done
 楼主| limee 发表于 2019-6-29 15:49 来自手机 | 显示全部楼层

如果是只保留文件结尾的-.jpg,
-不在末尾也删除掉。
应该怎么写呢?
 楼主| limee 发表于 2019-6-29 16:03 | 显示全部楼层
我改成rm *[!$-].jpg,结果目录下的jpg全被删除了。
我的意思是文件末尾有-的jpg不被删出掉。
zhuls 发表于 2019-6-29 17:11 | 显示全部楼层
做一个小程序:文件过滤软件,差不多就可以了吧?
john_lee 发表于 2019-6-29 18:50 | 显示全部楼层
  1. *[!-].jpg

这个样式匹配(Pattern Matching)就是匹配了倒数第5个字符不是'-',并且倒数第4、3、2、1个字符是".jpg"的文件名。
例如:
abc.jpg    // 匹配
abc-.jpg  // 不匹配
ab-c.jpg  // 匹配
ab-c-.jpg // 不匹配
您需要登录后才可以回帖 登录 | 注册

本版积分规则

301

主题

475

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部