You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

求助:如何批量移除目录中文件名xml_之后的内容?

移除目录文件中的时间戳解决方案

你的问题大概率是因为系统使用的rename命令版本不同,下面给你几个靠谱的解决方法:

方法1:通用Shell循环(所有Linux系统都适用)

不用纠结rename版本,直接用mv配合Shell参数扩展就能搞定:

for file in *.xml_*; do
    mv "$file" "${file%_*}"
done

解释:${file%_*}会自动去掉文件名最后一个_及其后面的所有内容,刚好把ABC.xml_202401012300转换成ABC.xml。

方法2:Perl版rename(Debian/Ubuntu等系统常用)

如果你的系统是Perl版rename(输入rename --version能看到Perl相关标识),把正则改得更精准即可:

rename 's/_\d+$//' *.xml_*

要是想更严格匹配.xml_开头的时间戳,用这个:

rename 's/(\.xml)_\d+$/$1/' *.xml_*

你之前的命令没生效的原因:s/xml_.*$/.xml/逻辑本身没问题,但如果你的rename不是Perl版,它会把xml_.*$当成字面字符串去匹配,自然找不到对应文件。

方法3:util-linux版rename(RHEL/CentOS等系统常用)

如果是util-linux版的rename(输入rename --version显示util-linux相关信息),用字面替换的语法:

rename '_[0-9]*' '' *.xml_*

精准替换.xml_加时间戳的版本:

rename '.xml_[0-9]*' '.xml' *.xml_*

内容的提问来源于stack exchange,提问作者grabrep gg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.28 20:55:01