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

如何递归根据上级两级文件夹名重命名指定文件?

递归查找并重命名文件的实现方案

可以通过find命令结合bash子shell实现需求,核心思路是对每个找到的file.txt,提取其所在目录及上级目录的名称,再构造新文件名完成重命名。

具体命令

find . -name "file.txt" -type f -exec bash -c '
  file="$1"
  dir=$(dirname "$file")
  parent_dir=$(dirname "$dir")
  part1=$(basename "$parent_dir")
  part2=$(basename "$dir")
  new_name="$dir/$part1.$part2.txt"
  mv "$file" "$new_name"
' bash {} \;

命令解释

  • find . -name "file.txt" -type f:从当前目录开始,递归查找所有名为file.txt的普通文件
  • -exec bash -c '...' bash {} \;:为每个找到的文件启动bash子shell执行处理逻辑,{}会被替换为当前找到的文件路径
  • dir=$(dirname "$file"):获取目标文件所在的目录路径(例如./A/B/C/D/file.txt对应./A/B/C/D)
  • parent_dir=$(dirname "$dir"):获取该目录的上级目录路径(对应./A/B/C)
  • part1=$(basename "$parent_dir"):提取上级目录的名称(对应C)
  • part2=$(basename "$dir"):提取当前目录的名称(对应D)
  • new_name="$dir/$part1.$part2.txt":拼接得到新的文件路径(对应./A/B/C/D/C.D.txt)
  • mv "$file" "$new_name":执行重命名操作

可选优化

如果担心重命名时覆盖已存在的文件,可以给mv命令加上-n参数,避免强制覆盖:

mv -n "$file" "$new_name"

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.17 14:12:05