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

Linux系统下如何批量重命名文件移除指定前缀及中间字符串

Linux 批量重命名匹配规则压缩文件实现方案

通用无依赖方案(全发行版可用)

不需要依赖特殊工具,直接用bash循环加正则处理即可,强烈建议先执行预览命令核对重命名规则,避免改错文件:

for file in download_*.tar.gz; do
  newname=$(echo "$file" | sed -E 's/^download_([^_]+)_[0-9]+_[0-9]+\.tar\.gz$/\1.tar.gz/')
  echo "待重命名: $file -> $newname"
done

预览输出的新旧文件名对应关系完全符合预期后,执行实际重命名命令:

for file in download_*.tar.gz; do
  newname=$(echo "$file" | sed -E 's/^download_([^_]+)_[0-9]+_[0-9]+\.tar\.gz$/\1.tar.gz/')
  mv -v -- "$file" "$newname"
done

命令逻辑说明:

  • 遍历当前目录下所有download_开头、.tar.gz结尾的目标文件
  • 正则匹配规则:捕获download_后第一个下划线前的文件名主体,跳过后续_<数字>_<数字时间戳>字段,拼接保留原.tar.gz后缀
  • mv的--参数用于兼容带特殊字符的文件名,-v参数会打印每一步重命名操作方便回溯

Perl版rename快捷方案(Debian/Ubuntu等系统适用)

如果你的系统默认搭载Perl版本的rename工具,可以直接用单行命令完成,同样先加-n参数做预览:

# 预览模式,不会实际修改文件名
rename -n 's/^download_([^_]+)_\d+_\d+\.tar\.gz$/$1.tar.gz/' download_*.tar.gz

# 确认输出无误后执行实际重命名
rename 's/^download_([^_]+)_\d+_\d+\.tar\.gz$/$1.tar.gz/' download_*.tar.gz

注意:不要跳过预览步骤直接执行重命名,避免正则匹配偏差导致文件名错乱。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 06:01:00