我正在處理根目錄,並希望列印以大寫字母開頭的目錄條目。
$ 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
會符合我的模式。
如何編寫僅匹配大寫字母的全域模式?
答案1
這是因為 glob 模式[A-Z]
通常不對應於大寫字母。具體來說,它是根據
當前語言環境的整理順序和字元集
如果您想要以大寫字母開頭的文件,您可以使用
echo [[:upper:]]*
或明確設定區域設置
(LC_COLLATE=C; echo [A-Z]*)
或使用 bash globasciiranges
shell 選項
(shopt -s globasciiranges; echo [A-Z]*)
請參閱以下Pattern matching
部分man bash