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

MacOS/Bash:如何将文件名替换为父目录名称并保留扩展名

解决文件重命名脚本的扩展名问题

你的核心问题是脚本里的目标文件名未添加.txt扩展名,修正后的脚本如下:

for file in */*.txt; do echo mv -- "$file" "${file%/*}/${file%/*}.txt"; done

关键修正说明:

  • ${file%/*} 提取的是当前文件所在的文件夹名称(例如123 文件标题),直接用它作为目标名会丢失.txt后缀,因此需要在末尾追加.txt,形成${file%/*}.txt
  • 保留echo是为了先预览重命名操作,确认输出的命令符合预期后,去掉echo即可执行实际重命名

操作步骤:

  1. 先运行带echo的脚本,检查每一行输出的mv命令是否正确(比如是否将123 文件标题/文件标题.txt映射为123 文件标题/123 文件标题.txt)
  2. 确认无误后,执行实际重命名命令:
for file in */*.txt; do mv -- "$file" "${file%/*}/${file%/*}.txt"; done

补充提示:

  • -- 用于兼容文件名中包含的特殊字符(比如空格、以连字符开头的名称),避免命令解析出错
  • 若每个文件夹内仅有一个.txt文件,该脚本可安全遍历所有目标文件

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 14:52:02