「echo [AZ]*」は小文字のファイル名にも一致しますか?

「echo [AZ]*」は小文字のファイル名にも一致しますか?

ルート ディレクトリで作業しており、大文字で始まるディレクトリ エントリを印刷したいと考えています。

$ echo [A-Z]*
Applications Library Network System Users Volumes bin cores dev etc home installer.failurerequests net private sbin tmp usr var vm

cores dev etc home installer.failurerequests net private sbin tmp usr var vm自分のパターンと一致するとは思っていなかったので、結果に困惑しました 。

大文字のみに一致する glob パターンを記述するにはどうすればよいでしょうか?

答え1

これは、グロブパターンが[A-Z]一般的に大文字に対応していないためです。具体的には、次のように展開されます。

現在のロケールの照合順序と文字セット

大文字で始まるファイルが必要な場合は、

echo [[:upper:]]*

またはロケールを明示的に設定する

(LC_COLLATE=C; echo [A-Z]*)

またはbashglobasciirangesシェルオプションを使用する

(shopt -s globasciiranges; echo [A-Z]*)

Pattern matchingのセクションを参照してくださいman bash

関連情報