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

Aad*_*hah 3 bash grep ls

我有一个blacklist文件:

$ cat blacklist
Iran
Iraq
Libya
Somalia
Sudan
Syria
Yemen
Run Code Online (Sandbox Code Playgroud)

如何blacklist从输出中排除此文件中列出的文件ls?我已经阅读了手册页,最接近的是--ignore不幸读取文件的选项.我还想到管道输出lsgrep和使用--invert-match选项忽略文件中的所有文件,blacklist但我不知道如何这样做.

cod*_*ter 8

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

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

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