調達から複数のファイルを除外しますか?

調達から複数のファイルを除外しますか?

または、filenameまたはで始まるすべてのファイルをsetopt extended_glob除外したいと思います。~/.config/zsh_completion.zshoptions.zsh

私は次のコマンドを持っています:

for f (${${(%):-%x}:P:h:h}/**/([^_|^completion|^options])*.zsh) print $f

操作を実行しますが、上記のコマンドもこれを除外しますlazyload.zsh。上記のコマンドがこのパターンを除外するのはなぜですか?私はそれが印刷されると予想しましたlazyload.zsh

答え1

のみ:

${${(%):-%x}:P:h:h}/**/(^(_|completion|options)*).zsh

^extendedglob否定演算子です。

[anything]ただ1文字、1だけ一致する必要があることを覚えておいてください。

[a|b]a|または と一致します。bまたはを除く[^a|b]すべての文字と一致します。a|b

したがって、パターンはlazyload.zsh単一文字一致演算子lによって除外された文字のリストにあるため除外されます。[^...]


¹(zsh他のシェルでは、一部のロケールの複数文字の組み合わせ要素と一致する可能性があります。zshは[...]有効な文字の一部ではないバイト、他のシェルのYMMVと一致する可能性があります)

関連情報