extglob 動作、特に bash で *(patternList) を使用する場合

extglob 動作、特に bash で *(patternList) を使用する場合

extglobを使用しようとしていますが、マニュアルページを読んだ後、*(patternList)がどのように機能するのか混乱しました。次のコマンドを使用するとします。

touch A  Ax  Axxx  Axxxx  Ay  X  X.bak  x  xx  xxxx 
ls A*(xx)

A Axxxxだけを印刷するのはなぜですか? Axxxにはxxも正確に一度だけ含まれていませんか?また、Ayがxxで0回発生するので、なぜ印刷されないのですか?

答え1

パターンは名前の接頭辞だけでなく、完全な名前と一致する必要があります。

Ay後ろに数字がA*(xx)含まれていないため、一致しません。パターンと一致しません。一致して。AxxyAyA*(xx)yA*(xx)?A*(xx)*

繰り返しますが、後ろに数字が含まれていないため、Axxx一致するものはありません。 (次に3回)、(次に1回、)などが一致します。A*(xx)AxxAxxxA*(x)AxA*(xx)xAxxxA*(xx)?A*(xx)*

答え2

Axxxにはxxも正確に一度だけ含まれていませんか?

はい。ただし、xパターンと一致しない追加のコンテンツがありますA*(xx)A*(xx)?たとえば、次のように一致します。

また、Ayがxxで0回発生するので、なぜ印刷されないのですか?

繰り返しますが、パターンには末尾y

私の考えでは、結局グロブだと思うのは完全な文字列マッチ。

関連情報