利用正则表达式选择“字符串1-字符串2-字符串3-字符串4”这类文件名

系统安装、升级讨论
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
回复
杏_wait
帖子: 5
注册时间: 2011-06-08 15:26

利用正则表达式选择“字符串1-字符串2-字符串3-字符串4”这类文件名

#1

帖子 杏_wait » 2014-08-16 13:12

各位大神,我现在有 字符串1-字符串2-字符串3-字符串4 这样的一个文件名,我要用正则表达式选择并且删除最后一个短横线后面的字符串4,我只知道利用-.*来筛选出来删除,我得到的结果是字符串1,想知道怎么才能得到结果字符串1-字符串2-字符串3。
cao627
帖子: 992
注册时间: 2007-12-05 10:57
系统: ubuntu14.04
来自: 金山

Re: 利用正则表达式选择“字符串1-字符串2-字符串3-字符串4”这类文件名

#2

帖子 cao627 » 2014-08-16 13:35

你要文件改名? 是下面这个意思吗?
czj@sun:/tmp$ ls
lost+found
czj@sun:/tmp$ touch aaa-bbb-ccc-ddd
czj@sun:/tmp$ touch xxxx-yyyy-zzz-www
czj@sun:/tmp$ ls
aaa-bbb-ccc-ddd lost+found xxxx-yyyy-zzz-www
czj@sun:/tmp$ rename 's/([^-]+-[^-]+-[^-]+)-[^-]+/$1/' /tmp/*
czj@sun:/tmp$ ls
aaa-bbb-ccc lost+found xxxx-yyyy-zzz
杏_wait
帖子: 5
注册时间: 2011-06-08 15:26

Re: 利用正则表达式选择“字符串1-字符串2-字符串3-字符串4”这类文件名

#3

帖子 杏_wait » 2014-08-16 20:49

cao627 写了:你要文件改名? 是下面这个意思吗?
czj@sun:/tmp$ ls
lost+found
czj@sun:/tmp$ touch aaa-bbb-ccc-ddd
czj@sun:/tmp$ touch xxxx-yyyy-zzz-www
czj@sun:/tmp$ ls
aaa-bbb-ccc-ddd lost+found xxxx-yyyy-zzz-www
czj@sun:/tmp$ rename 's/([^-]+-[^-]+-[^-]+)-[^-]+/$1/' /tmp/*
czj@sun:/tmp$ ls
aaa-bbb-ccc lost+found xxxx-yyyy-zzz
谢谢你的回答,我看了好久才看懂rename后面的意思,我自己还的好好学习啊。
我问了别人,用-[^-]*$替换就可以把最后面一个的短横杠后面的字符去掉了,并且还适合有很多个短横杠的情况 :em01
回复