zsh glob パターンは、1 つのファイルを除くすべてのファイルと一致しますが、EXTENDED_GLOB が設定されていても機能しません。

zsh glob パターンは、1 つのファイルを除くすべてのファイルと一致しますが、EXTENDED_GLOB が設定されていても機能しません。

複数のファイルを含むディレクトリがあります。

$ ls tdir
xx  yy zz

zshExceptで拡張されるグローバルパターンを探していますxx。私が試したことは次のとおりです。

$ set -o EXTENDED_GLOB
$ echo tdir/*~xx
tdir/xx tdir/yy tdir/zz

ご覧のとおり、これは機能しません。*~xx期待どおりに拡張されません。これを正しく書くにはどうすればよいですか?

答え1

(and-not) 演算子は、glob~filterフィルタを全グロブ結果の否定パターンマッチングとして適用します。

これにより、次のような作業が可能になります。

grep foo ./**/*~*/.svn/*(.mh-1)

例えば。

これには次のものが必要です。

echo tdir/*~tdir/xx

または:

echo tdir/*~*/xx

または:

echo tdir/(*~xx)

または^代わりに否定演算子を使用してください。

echo tdir/^xx

関連情報