求教 rename 批量删除文件名中的一些字符

2015-08-12 15:02:28 +08:00
 fl2al7k
现在有很多个文件,文件名结尾有些乱七八糟的字符,想删除掉。
特举例俩个文件名,求教一条命令:
文件一:
v2ex_Test_V1.0.1_zhenshimaf.txt
文件二:
v2ex_Online_V1.0.1_toudale.txt

想要把文件里面_zhenshimaf和_toudale这种无意义字符删除掉。

我不懂正则表达式匹配我是这么写的:
rename 's/V1.0.1*.txt/V1.0.1.txt/' *

然后肯定是不对的。。求高手帮忙~
5465 次点击
所在节点    Linux
12 条回复
noe132
2015-08-12 15:29:21 +08:00
分析一下

一般格式如下

(name)_(vertion)_(description).(suffix)

一段一段写就可以了。

(([a-zA-Z0-9]*)(_[a-zA-Z0-9]*){0,10})_[vV]?(\d*(\.\d*){0,10})_([a-zA-Z0-9]*)\.([a-zA-Z0-9]{1,10})

写的貌似不太精简~
lilydjwg
2015-08-12 16:36:37 +08:00
rename 's/_[^.]+\.txt/.txt/' *.txt
aec4d
2015-08-12 17:42:20 +08:00
是我就写脚本了XD
a = 'v2ex_Test_V1.0.1_zhenshimaf.txt'
print(a.rsplit('_', 1)[0] + '.txt')
shinestmt
2015-08-12 17:58:57 +08:00
使用Excel, 找到最后一个下划线, 保留之前的内容, 在加上后缀.
然后拼装命令 rename A1 B1
ngn999
2015-08-12 18:07:01 +08:00
如果按perl的正则写:

rename 's/_[^_]+\.txt/.txt/' *
skydiver
2015-08-12 18:37:31 +08:00
真是麻烦,头大了
stockss
2015-08-12 18:47:06 +08:00
这么简单的问题,不用正则。
Shazoo
2015-08-12 19:13:10 +08:00
额,直觉是使用find来做……
msg7086
2015-08-12 21:22:25 +08:00
直接正则即可啊, s/_[a-z]+\././ 楼主自己再根据情况改改呗,毕竟不知道你文件的规律。
HMSQQbA
2015-08-13 00:15:58 +08:00
我就直接用py脚本,迅速解决
Catcheru
2019-06-21 00:49:10 +08:00
rename 可以进入更深层次修改子文件的名字吗?
BoyBoy
2021-03-23 17:29:11 +08:00
@Catcheru #11 不能的吧,看了很多帖子,只能修改当前目录下的文件

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/212675

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX