打印

这个shell脚本如何写

[复制链接]
809|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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 编辑
#!/bin/bash
rm *[!-].jpg
for jpg in *[-].jpg; do
        mv ${jpg} ${jpg:0:-5}.jpg
done

使用特权

评论回复
板凳
limee|  楼主 | 2019-6-29 15:49 | 只看该作者

如果是只保留文件结尾的-.jpg,
-不在末尾也删除掉。
应该怎么写呢?

使用特权

评论回复
地板
limee|  楼主 | 2019-6-29 16:03 | 只看该作者
我改成rm *[!$-].jpg,结果目录下的jpg全被删除了。
我的意思是文件末尾有-的jpg不被删出掉。

使用特权

评论回复
5
zhuls| | 2019-6-29 17:11 | 只看该作者
做一个小程序:文件过滤软件,差不多就可以了吧?

使用特权

评论回复
6
john_lee| | 2019-6-29 18:50 | 只看该作者
*[!-].jpg

这个样式匹配(Pattern Matching)就是匹配了倒数第5个字符不是'-',并且倒数第4、3、2、1个字符是".jpg"的文件名。
例如:
abc.jpg    // 匹配
abc-.jpg  // 不匹配
ab-c.jpg  // 匹配
ab-c-.jpg // 不匹配

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

301

主题

475

帖子

0

粉丝