我需要找到不在列表中的目录。
假设我有以下目录:
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)
假设这些目录位于根 ( /
) 目录中。否则省略该/
字符。