web-dev-qa-db-ja.com

'echo [A-Z] *'は小文字のファイル名にも一致しますか?

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

$ 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パターンを作成するにはどうすればよいですか?

7
Algebra

これは、グロブパターン[A-Z]が通常大文字に対応していないためです。具体的には、

現在のロケールの照合シーケンスと文字セット

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

echo [[:upper:]]*

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

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

または、bash globasciiranges Shellオプションを使用します

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

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

14
steeldriver