以深度优先递归方式重命名文件和文件夹

以深度优先递归方式重命名文件和文件夹

从本网站的另一个答案中,我收集了以下用于递归重命名文件的片段:

find . -iname "*oldName*" -exec rename oldName newName '{}' \;

如果您只处理文件,这非常有用。但是,如果您的目录结构中的目录也包含oldName要更改的内容,则此操作会失败,因为它首先重命名目录,然后找不到要重命名的文件。

我可以通过运行命令两次来解决这个问题,但这并不理想。

有没有办法修改命令,使其以深度优先的方式执行此操作,从而完全避免此问题?

答案1

find有一个-depth选项可以完全满足您的需求:

find . -depth -iname "*oldName*" -exec rename oldName newName '{}' \;

相关内容