技术解析

求教 rename 批量删除文件名中的一些字符
0
2021-07-02 15:29:14
idczone
现在有很多个文件,文件名结尾有些乱七八糟的字符,想删除掉。
特举例俩个文件名,求教一条命令:
文件一:
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/' *

然后肯定是不对的。。求高手帮忙~
分析一下
一般格式如下
(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})

写的貌似不太精简~

rename 's/_[^.]+\.txt/.txt/' *.txt

是我就写脚本了XD
a = 'v2ex_Test_V1.0.1_zhenshimaf.txt'
print(a.rsplit('_', 1)[0] + '.txt')

使用Excel, 找到最后一个下划线, 保留之前的内容, 在加上后缀.
然后拼装命令 rename A1 B1

如果按perl的正则写:
rename 's/_[^_]+\.txt/.txt/' *

真是麻烦,头大了

这么简单的问题,不用正则。

额,直觉是使用find来做……

直接正则即可啊, s/_[a-z]+\././ 楼主自己再根据情况改改呗,毕竟不知道你文件的规律。

我就直接用py脚本,迅速解决

rename 可以进入更深层次修改子文件的名字吗?

不能的吧,看了很多帖子,只能修改当前目录下的文件

数据地带为您的网站提供全球顶级IDC资源
在线咨询
专属客服