![`ls -d * [! e] * `がeを含むすべてのファイルを省略するのではなく、すべてのファイルを表示するのはなぜですか?](https://linux33.com/image/106772/%60ls%20-d%20*%20%5B!%20e%5D%20*%20%60%E3%81%8Ce%E3%82%92%E5%90%AB%E3%82%80%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E7%9C%81%E7%95%A5%E3%81%99%E3%82%8B%E3%81%AE%E3%81%A7%E3%81%AF%E3%81%AA%E3%81%8F%E3%80%81%E3%81%99%E3%81%B9%E3%81%A6%E3%81%AE%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92%E8%A1%A8%E7%A4%BA%E3%81%99%E3%82%8B%E3%81%AE%E3%81%AF%E3%81%AA%E3%81%9C%E3%81%A7%E3%81%99%E3%81%8B%EF%BC%9F.png)
ls -d *e*
「e」を含むすべてのファイルを印刷します。しかし、むしろうまくls -d *[!e]*
いかないようです。なぜ?
独自のパラメータとして受け取り、すべてのファイルを拡張してそうなls
のでしょうか?*
私はこれができることを知っています:(ls -d !(*e*)
Bashまたはkshでsetを使用extglob
)
答え1
このglobが実際に行うことは、任意の数の文字と一致し、eではなく単一の文字と任意の数の文字と一致することです。名前がeでのみ構成されていないすべてのファイルと一致します。