使用重命名重命名文件和目录

时间:2017-05-22 20:40:22

标签: linux bash rename

我正在使用Linux重命名命令行工具以递归方式搜索目录,以重命名任何目录以及找到的文件。我遇到的问题是rename命令将重命名文件的子目录,然后尝试重命名同一文件的父目录。这将失败,因为子目录已被重命名,导致“没有这样的文件或目录”

命令:

rename -f 's/foo/bar/' **
rename -f 's/Foo/Bar/' **

例如,这是一个原始文件,我想用'bar'替换'foo'

文件:

/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

您可以从错误消息中看到它正在尝试重命名父目录,但此时子目录已经更改,导致找不到文件错误。是否有重命名命令的参数可以解决这个问题,还是我需要以不同的方式解决这个问题?

1 个答案:

答案 0 :(得分:0)

使用find + execdir选项:

$ find . -execdir rename "s/foo/bar/" {} \;
$ find . -execdir rename "s/Foo/Bar/" {} \;