我有一个包含几个文件的目录:
$ ls tdir
xx yy zz
我正在寻找一个zsh
全局模式,它扩展到除xx
.这是我尝试过的:
$ set -o EXTENDED_GLOB
$ echo tdir/*~xx
tdir/xx tdir/yy tdir/zz
正如我们所看到的,这是行不通的;*~xx
没有按照我预期的方式扩展。我该如何正确地写这个?
答案1
(and-not)运算glob~filter
符应用过滤器作为整个 glob 结果的负模式匹配。
这允许这样的事情:
grep foo ./**/*~*/.svn/*(.mh-1)
例如。
在这里,你需要:
echo tdir/*~tdir/xx
或者:
echo tdir/*~*/xx
或者:
echo tdir/(*~xx)
或者使用^
否定运算符来代替:
echo tdir/^xx