如何在bash中使用带异常的通配符?

yve*_*mes 3 regex bash shell glob wildcard

我想grep文件夹中的多个文件.除了像pcap文件和gziped文件这样的大文件之外,我想要大肆渲染它们.所以我想:

$ grep foo !({*pcap*,*gz*})
Run Code Online (Sandbox Code Playgroud)

但这不起作用.因为虽然它避免了gziped文件,但!({*pcap*,*gz*})实际上shell扩展会返回pcap文件.知道如何包含除pcap和gziped文件之外的所有文件吗?

che*_*ner 6

GLOBIGNORE参数列出了要从glob扩展的结果中排除的文件:

假设当前目录为空:

$ touch foo1 foo2 foo3 foo10 foo11 foo12
$ GLOBIGNORE="foo1*:foo3"
$ ls *
foo2
Run Code Online (Sandbox Code Playgroud)


iru*_*var 5

你需要改变它

grep foo  !(*pcap*|*gz*)
Run Code Online (Sandbox Code Playgroud)

排除pcapgz文件