代码之家  ›  专栏  ›  技术社区  ›  Evanss

在Mac上按名称删除嵌套的子目录?

  •  0
  • Evanss  · 技术社区  · 5 年前

    如何在mac上通过命令行删除某个名称的所有子目录?

    如果我有

    /parent/foo
    /parent/child/foo
    /parent/child/child2/foo
    

    如何从运行命令 /parent 这将删除名为 foo 所有这些都是竞争?

    find . -type d -name foo -delete
    
    0 回复  |  直到 5 年前
        1
  •  0
  •   CRD    5 年前

    使用 find

    find . -d -type d -name a -exec rm -r {} \;
    

    -delete 不会删除非空目录(因此其等效于 rmdir rm -r ),但这可能没有记录。

    这个 -exec {} 替换为匹配的路径名,并且 \;

    这个 -d 设置深度优先遍历,即处理目录 之后 他们的内容。如果你忽略这个 找到 将首先删除目录,然后尝试递归到其中,这将导致错误消息,但仍然有效。

    有一种较短的方法 zsh :

    rm -r **/a
    

    ** 搜索匹配吗 a 在任何深度。

    如果 zsh公司 -c 从另一个shell运行命令的参数:

    zsh -c 'rm -r **/a'
    

    高温

        2
  •  -1
  •   Haxername    5 年前

    执行以下操作:

    find . -type d -name "foo" -delete