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

嵌套目录下批量重命名文件的路径失效问题求解

嵌套目录批量重命名的路径失效问题解决办法

问题场景

现有嵌套目录结构如下:

.
└── key_A
    ├── data_A
    │   ├── d0_A.txt
    │   └── d1_A.txt
    ├── image_A.txt
    └── text_A.txt

需要将所有文件名/目录名中的'A'替换为'B',直接执行以下命令会报错:

find . -name '*A*' -exec rename 's/A/B/g' '{}' ';'

错误信息:

find: ‘./key_A’: No such file or directory

原因是find默认从上到下遍历目录,先重命名了上层的key_A为key_B,后续遍历原路径时找不到对应目录。

简便解决方案

使用find的-depth参数,让它从最深层的文件/目录开始处理,再逐层向上处理父目录:

find . -depth -name '*A*' -exec rename 's/A/B/g' '{}' ';'

执行顺序说明

  1. 先处理最内层的d0_A.txt、d1_A.txt,重命名为d0_B.txt、d1_B.txt
  2. 接着处理data_A目录,重命名为data_B
  3. 然后处理image_A.txt、text_A.txt,重命名为image_B.txt、text_B.txt
  4. 最后处理最上层的key_A目录,重命名为key_B
    全程所有操作的路径都是有效的,不会出现找不到目录的错误。

可选预览操作

如果想先确认重命名结果,避免误操作,可以给rename加上-n(预览)和-v(详细输出)参数:

find . -depth -name '*A*' -exec rename -nv 's/A/B/g' '{}' ';'

确认输出符合预期后,去掉-n执行实际重命名即可。

内容的提问来源于stack exchange,提问作者Paweł Wójcik

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 00:02:31