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

如何在Mac终端(Unix)用mv批量移除文件名扩展名前的指定字符?

解决Mac终端无rename命令时的批量重命名问题

没问题,我来帮你搞定这个批量重命名需求!既然Mac默认没有rename命令,咱们用mv配合shell循环就能轻松实现,这里给你两种思路,推荐更通用的那一种:

方法一:按下划线分割(推荐)

你的文件名格式是DTMxxx_xxxxxx-xxxxxx.fq,核心是提取下划线之前的前缀部分,再加上.fq后缀。用bash的参数扩展就能快速实现:

# 先测试命令(不会实际修改文件,仅预览操作)
for f in DTM*.fq; do echo mv "$f" "${f%%_*}.fq"; done

执行后会打印出将要执行的重命名操作,比如:

mv DTM001_ACGGT-TTAGGC.fq DTM001.fq
mv DTM156_GGTTG-ACAGTG.fq DTM156.fq

确认输出符合预期后,去掉echo执行实际重命名:

for f in DTM*.fq; do mv "$f" "${f%%_*}.fq"; done

命令解释

  • for f in DTM*.fq:遍历当前目录下所有以DTM开头、.fq结尾的文件
  • ${f%%_*}:bash参数扩展语法,意思是从文件名末尾开始,删除最长的_*匹配内容,也就是去掉第一个下划线及后面的所有字符,只保留DTMxxx部分
  • 最后加上.fq就得到了目标文件名

方法二:固定移除末尾13个字符(适配你的初始思路)

如果你确定要移除扩展名前的最后13个字符,也可以用这个方法(依赖文件名后缀前的字符长度固定为13):

# 先测试
for f in DTM*.fq; do echo mv "$f" "${f%?????????????.fq}.fq"; done

同样,确认后去掉echo执行:

for f in DTM*.fq; do mv "$f" "${f%?????????????.fq}.fq"; done

命令解释

  • ${f%?????????????.fq}:这里的%是从文件名末尾匹配内容,13个?代表13个任意字符,加上.fq,删除这部分后再补回.fq,就实现了移除扩展名前13个字符的效果

两种方法都能达到你的需求,更推荐方法一,因为它不依赖后面字符的固定长度,兼容性更强~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 07:03:18