重命名匹配模式的多个目录

时间:2013-08-02 23:53:58

标签: linux bash

我想重命名一个与名称匹配的basedir下的所有目录。例如:

basedir/中,我有:

- foo/bar/blah
- my/bar/foo
- some/bar/foo1
- other/foo/bar

我想重命名匹配bar的所有目录,但我想保留前缀部分。

使用find,我可以轻松列出所有目录:

find . -name repositoryunit -type d

但是,如何使用-exec mv {} ...(或者可能与其他应用结合使用)以保留前缀?

非常感谢提前!

1 个答案:

答案 0 :(得分:21)

find . -name bar -type d -execdir mv {} baz \;

-execdir在执行命令之前将目录更改为父目录,因此这里的mv将是每个父目录的本地目录。