如何从ls中排除列入黑名单的文件?

How to exclude blacklisted files from ls?

我有一个 blacklist 文件:

$ cat blacklist
Iran
Iraq
Libya
Somalia
Sudan
Syria
Yemen

如何从 ls 的输出中排除此 blacklist 文件中列出的文件?我已经阅读了手册页,最接近的是 --ignore 选项,不幸的是它没有读取文件。我还想过将 ls 的输出传送到 grep 并使用 --invert-match 选项忽略 blacklist 文件中的所有文件,但我不知道该怎么做所以。

如果你必须使用ls,你可以这样做:

ls | grep -vFxf blacklist
  • -v 反转选择
  • -F 将文件黑名单中的行视为字符串,而不是模式
  • -x匹配整行
  • -f 从黑名单中读取要匹配的模式/字符串

请注意,上述解决方案适用于所有情况,除非文件名中包含换行符。