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

求助:在Bash中批量移除文件名中间字符及扩展名

Bash批量重命名文件方案

你的需求是把类似TS_01_001_21.0.tif的文件名改成TS_01_21.0,核心是移除中间的三位字符段和.tif扩展名。可以基于你已有的代码扩展,用Bash内置的参数扩展或者cut命令实现,两种方法都高效易用:

方法一:纯Bash内置参数扩展(无需额外工具)

直接在循环里加上替换逻辑,把文件名里的_XXX_(XXX为三位任意字符)替换成_,再移除扩展名:

for f in *.tif;do 
    # 先替换中间的_XXX_为_,再移除.tif扩展名
    mv "${f}" "${f//_???_/_%.tif}"
done

如果想更精确匹配中间的三位数字(避免意外替换其他字符),可以把匹配规则改成数字专属:

for f in *.tif;do 
    mv "${f}" "${f//_[0-9][0-9][0-9]_/_%.tif}"
done

方法二:用cut命令拆分字段

利用cut按下划线分割文件名,提取第1、2、4段(跳过中间的第3段),再完成重命名:

for f in *.tif;do 
    # 先去掉扩展名,再用cut提取需要的字段
    new_name=$(echo "${f%.tif}" | cut -d'_' -f1,2,4)
    mv "${f}" "${new_name}"
done

安全提示

批量重命名前,建议先把mv换成echo,比如echo "${f}" -> "${new_name}",先预览所有文件名的变化,确认没问题再执行实际重命名,避免误改文件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 07:10:18