zsh:パターンからファイルを除外する

zsh:パターンからファイルを除外する

次のようなファイルがあるとしましょう。

|-- 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

おすすめ記事