从本网站的另一个答案中,我收集了以下用于递归重命名文件的片段:
find . -iname "*oldName*" -exec rename oldName newName '{}' \;
如果您只处理文件,这非常有用。但是,如果您的目录结构中的目录也包含oldName
要更改的内容,则此操作会失败,因为它首先重命名目录,然后找不到要重命名的文件。
我可以通过运行命令两次来解决这个问题,但这并不理想。
有没有办法修改命令,使其以深度优先的方式执行此操作,从而完全避免此问题?
答案1
find
有一个-depth
选项可以完全满足您的需求:
find . -depth -iname "*oldName*" -exec rename oldName newName '{}' \;