我正在处理根目录并想要打印以大写字母开头的目录条目。
$ 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
这是因为 glob 模式[A-Z]
通常不对应大写字母。具体来说,它根据以下方式扩展:
当前语言环境的排序顺序和字符集
如果你想要以大写字母开头的文件,你可以使用
echo [[:upper:]]*
或者明确设置语言环境
(LC_COLLATE=C; echo [A-Z]*)
或者使用 bash globasciiranges
shell 选项
(shopt -s globasciiranges; echo [A-Z]*)
Pattern matching
请参阅man bash