利用正则表达式选择“字符串1-字符串2-字符串3-字符串4”这类文件名
版面规则
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
我们都知道新人的确很菜,也喜欢抱怨,并且带有浓厚的Windows习惯,但既然在这里询问,我们就应该有责任帮助他们解决问题,而不是直接泼冷水、简单的否定或发表对解决问题没有任何帮助的帖子。乐于分享,以人为本,这正是Ubuntu的精神所在。
-
- 帖子: 5
- 注册时间: 2011-06-08 15:26
利用正则表达式选择“字符串1-字符串2-字符串3-字符串4”这类文件名
各位大神,我现在有 字符串1-字符串2-字符串3-字符串4 这样的一个文件名,我要用正则表达式选择并且删除最后一个短横线后面的字符串4,我只知道利用-.*来筛选出来删除,我得到的结果是字符串1,想知道怎么才能得到结果字符串1-字符串2-字符串3。
-
- 帖子: 992
- 注册时间: 2007-12-05 10:57
- 系统: ubuntu14.04
- 来自: 金山
Re: 利用正则表达式选择“字符串1-字符串2-字符串3-字符串4”这类文件名
你要文件改名? 是下面这个意思吗?
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
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
-
- 帖子: 5
- 注册时间: 2011-06-08 15:26
Re: 利用正则表达式选择“字符串1-字符串2-字符串3-字符串4”这类文件名
谢谢你的回答,我看了好久才看懂rename后面的意思,我自己还的好好学习啊。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
我问了别人,用-[^-]*$替换就可以把最后面一个的短横杠后面的字符去掉了,并且还适合有很多个短横杠的情况
