`ls -d * [! e] * `がeを含むすべてのファイルを省略するのではなく、すべてのファイルを表示するのはなぜですか?

`ls -d * [! e] * `がeを含むすべてのファイルを省略するのではなく、すべてのファイルを表示するのはなぜですか?

ls -d *e*「e」を含むすべてのファイルを印刷します。しかし、むしろうまくls -d *[!e]*いかないようです。なぜ?

独自のパラメータとして受け取り、すべてのファイルを拡張してそうなlsのでしょうか?*

私はこれができることを知っています:(ls -d !(*e*)Bashまたはkshでsetを使用extglob

答え1

このglobが実際に行うことは、任意の数の文字と一致し、eではなく単一の文字と任意の数の文字と一致することです。名前がeでのみ構成されていないすべてのファイルと一致します。

関連情報