【问题标题】:Rename multiple directories matching pattern重命名多个目录匹配模式
【发布时间】:2020-01-29 20:34:08
【问题描述】:

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

basedir/,我有:

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

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

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

find . -name repositoryunit -type d

但是,我怎样才能使用-exec mv {} ...(或者可能与另一个应用程序结合使用)以保留前缀?

提前非常感谢!

【问题讨论】:

    标签: linux bash


    【解决方案1】:
    find . -depth -name bar -type d -execdir mv {} baz \;
    

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

    【讨论】:

    • 请注意,如果搜索到的目录中已经是目录“baz”,则“bar”将被移入其中。
    • 有没有办法在破坏任何东西之前空运行这个命令?
    • @MohammadFaisal 添加echo: find ... -execdir echo mv {} baz \;
    猜你喜欢
    • 2020-06-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-01
    相关资源
    最近更新 更多