次のようなファイルがあるとしましょう。
|-- bar `-- foo |-- type_A_1 |-- type_A_2 |-- type_B_1 |-- type_B_2 |-- type_B_xx |-- type_B_xx `-- something_else
私は次のコマンドを考える
print -l foo/*~{type_B*}
印刷されますすべて下にfoo
とは別にしかし、そうではありませんtype_B
。代わりに、fooの下のすべての内容を印刷します。
foo/type_A_1
foo/type_A_2
foo/type_B_1
foo/type_B_2
foo/type_B_xx
foo/something_else
私もこれを試しましたが、print -l foo/*~type_B
同じ結果を得ました。
~
zshの例外ワイルドカードはどのように機能しますか?
ベストアンサー1
扱いにくい^
EXTENDED_GLOBがオンのときにglob演算子があります。これはあなたが説明する状況に完全に合うようです。
setopt extendedglob
print -rl foo/^type_A*
これは、「パターンと一致する項目を除くすべての項目と一致」を意味するが、その効果は、スラッシュ間、パターン開始部分と第1スラッシュ間、または(この例のように)パターン部分に限定される。最後のスラッシュとパターンの終わり。
あなたは見ることができます扱いにくい現在有効なオプション:
setopt
EXTENDED_GLOBを無効にします。
unsetopt extendedglob