ルート ディレクトリで作業しており、大文字で始まるディレクトリ エントリを印刷したいと考えています。
$ 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