批量重命名文件夹内文件:移除文件名指定前缀问题求助
解决批量重命名文件的问题
我懂你要做的是去掉文件名开头到第一个下划线的部分,把类似 Agu-1_9942_quant.sf 的文件名改成 9942_quant.sf。你之前用的 rename 's/_//g' *.sf 是把所有下划线都删掉,这显然不符合需求,咱们调整下正则表达式就行。
正确的重命名命令
直接用这个命令就能实现你想要的效果:
rename 's/^.*?_//' *.sf
正则表达式拆解
^:匹配文件名的起始位置.*?:非贪婪匹配任意字符(这样会停在第一个下划线的位置,而不是最后一个,避免误删后面的内容)_:匹配第一个下划线- 把这部分内容替换为空,就刚好去掉了开头到第一个下划线的所有字符,留下你需要的后半部分文件名。
先预览再执行(推荐)
如果你担心出错,可以先加 -n 参数预览重命名效果,不会实际修改文件:
rename -n 's/^.*?_//' *.sf
执行后会列出每个文件的修改前后对比,确认没问题再去掉 -n 执行实际重命名。
内容的提问来源于stack exchange,提问作者Waqas Khokhar
相关产品推荐
相关产品推荐

