【问题标题】:How to keep certain folders and delete rest in Unix如何在 Unix 中保留某些文件夹并删除其余文件夹
【发布时间】:2015-10-07 18:54:01
【问题描述】:

我有大约 10 个文件夹,我试图在这些文件夹下只保留几个子文件夹并删除其余的。

例子:我有

A/1 A2 A/3 A/4 乙/1 B/4 B/5 B/6

我试图在每个父文件夹 A 和 B 下只保留文件夹 1 和 4。我正在使用 find -type d -name 2 -exec rm -rf {} \; 查找和删除每个文件夹。

是否有任何 unix 命令只保留文件夹 1 和 4 并删除其余的?

【问题讨论】:

    标签: unix find rm rmdir


    【解决方案1】:

    告诉 find 你在找什么;

    find . -mindepth 2 -type d -name "[^14]" -exec rm -rf {} \;
    

    排除目录 1 和 4,在子级别,找到其他目录并删除它们。

    【讨论】:

    • 我试过这个命令来检查,它没有返回任何东西。寻找 。 -mindepth 2 -type d -name "[^14]" -print
    • 很奇怪。在我的安装中,我得到了您要求的确切结果。除非你的目录不是数字...
    【解决方案2】:

    AIG 的排除想法可能是正确的,但使用 find 排除的方法是使用 -o(或)运算符,如果前面的内容为真则停止,否则继续:

    find . -mindepth 2 -type d -name 1 -o -name 4 -o -exec rm -rf {} +
    

    【讨论】:

      【解决方案3】:

      我相信这适用于 posix 兼容系统:

      find . -type d -links 2 \! \( \( -name 1 \) -o \( -name 4 \) \) -exec rm -rf {} \;
      

      这仅包括子目录,不包括名为 1 或 4 的目录。

      【讨论】:

        【解决方案4】:

        只使用 glob

        $ rm -rf [AB]/[^14]
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-04-16
          • 2019-04-28
          • 1970-01-01
          • 1970-01-01
          • 2020-11-07
          • 1970-01-01
          相关资源
          最近更新 更多