我正在使用Perl命令行工具递归地搜索一个目录,以重命名它找到的任何目录和文件。我遇到的问题是,rename命令将重命名一个文件的子目录,然后尝试重命名同一个文件的父目录。这将失败,因为子目录已被重命名,导致“没有这样的文件或目录”。
命令:
rename -f 's/foo/bar/' **
rename -f 's/Foo/Bar/' **例如,这里有一个原始文件,我想将'foo‘替换为'bar’
文件:
/test/foo/com/test/foo/FooMain.java失败:
Can't rename /test/foo/com/test/foo/FooMain.java /test/bar/com/test/foo/FooMain.java: No such file or directory首选文件:
/test/bar/com/test/bar/BarMain.java您可以从错误消息中看到,它试图重命名父目录,但此时子目录已被更改,导致文件未找到错误。是否有参数用于重命名命令来修复此问题,还是需要以另一种方式进行此操作?
发布于 2023-01-16 05:12:28
如前所述,您正在询问有关perl的内容,并在sh中显示代码。
如果您想使用Perl 5
File::Find::Rule将帮助您找到将帮助您找到目录。rename将完成剩下的工作。https://unix.stackexchange.com/questions/366780
复制相似问题