查找不在参数列表中的目录

查找不在参数列表中的目录

我需要找到不在列表中的目录。

假设我有以下目录:

opt
cmd
XX

我需要获取上面3个之外的所有目录。

答案1

find

find /path -maxdepth 1 -not \( -name "opt" -or -name "cmd" -or -name "XX" \)
  • -maxdepth 1不会下降到子目录;不递归
  • -not \( ... \)否定括号内的所有内容
    • -name ... -or -name ...:您要排除的名称与-or

另一种方法可能是使用 find -regex,您可以将所有排除目录放入一个模式中:

find /path -maxdepth 1 -not -regex ".*/opt\|.*/cmd\|.*/XX"

答案2

根据您使用的外壳,您可以尝试bash

shopt -s extglob
ls -ld /!(opt|mnt|XX)

假设这些目录位于根 ( /) 目录中。否则省略该/字符。

相关内容