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

Linux Bash下批量移除文件名倒数第二部分的重命名方法求助

批量移除文件名倒数第二部分的实现方案

方案1:直接使用util-linux的rename工具

针对你的场景(文件名以.csv结尾,需移除最后两个点之间的内容),util-linux自带的rename工具可以通过通配符匹配快速实现:

rename -v '*.*.csv' '*.csv' *.csv
  • -v:显示每一步的重命名操作,方便验证结果
  • 逻辑:*.*.csv匹配所有包含至少两个点且以.csv结尾的文件,替换时保留第一个*匹配的前缀部分,直接拼接.csv,自动移除最后两个点之间的倒数第二部分

方案2:bash循环+参数扩展(通用场景)

如果你的文件后缀不固定,或者需要更精准的控制,用bash内置的参数扩展功能更可靠:

for file in *.csv; do
  [ -f "$file" ] || continue  # 跳过非文件类型(如目录)
  prefix=${file%.*}           # 去掉最后一个点及之后的内容,得到倒数第二部分之前的前缀
  new_prefix=${prefix%.*}     # 再去掉一次,彻底移除倒数第二部分
  suffix=${file##*.}          # 提取文件后缀
  new_file="${new_prefix}.${suffix}"
  mv -n "$file" "$new_file"   # -n 避免覆盖已存在的文件,预览时保留,执行时可移除
done
  • 优势:支持含空格的文件名,不受后缀限制,只要文件名包含至少两个点就能正确处理
  • 预览验证:先运行带-n的命令,确认重命名结果符合预期后,再去掉-n执行实际操作

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 09:20:41