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

如何使用带正则的rename命令移除文件名末尾部分并保留扩展名?

解决方法

你的原命令问题在于用固定长度的.{15}匹配结尾,这会因为文件名长度不同导致错误截断,应该精准匹配-test-加数字的部分,而非靠长度硬截断。

根据你的需求,分两种情况给出正确命令:

情况1:-test-后面是固定5位数字(比如你的例子里的12345)

直接用正则精准匹配目标部分:

rename -n 's/(.*)-test-\d{5}\.txt$/$1.txt/' *.txt
  • (.*):捕获文件名开头的核心部分(也就是你要保留的filename)
  • -test-\d{5}\.txt$:匹配结尾的-test-12345.txt(\d{5}代表5位数字,\.转义点号避免匹配任意字符)
  • 替换成$1.txt:把捕获的核心部分加上.txt扩展名

情况2:-test-后面的数字位数不固定(比如可能是3位、6位等)

把\d{5}改成\d+(匹配1个或多个数字)即可:

rename -n 's/(.*)-test-\d+\.txt$/$1.txt/' *.txt

注意事项

  • 先运行带-n的命令(测试模式),确认输出的重命名结果符合预期后,再去掉-n执行实际重命名操作。
  • 以上命令适用于基于Perl的rename版本(大部分Linux发行版默认是这个版本),你的原命令用了Perl风格的s///语法,所以直接可用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 15:12:45