我正在处理根目录并希望打印以大写字母开头的目录条目。
$ echo [A-Z]*
Applications Library Network System Users Volumes bin cores dev etc home installer.failurerequests net private sbin tmp usr var vm
Run Code Online (Sandbox Code Playgroud)
结果让我困惑,因为我没想到
cores dev etc home installer.failurerequests net private sbin tmp usr var vm
会匹配我的模式。
如何编写仅匹配大写字母的 glob 模式?
ste*_*ver 15
那是因为 glob 模式[A-Z]
通常不对应于大写字母。具体来说,它根据
当前语言环境的整理顺序和字符集
如果你想要以大写字母开头的文件,你可以使用
echo [[:upper:]]*
Run Code Online (Sandbox Code Playgroud)
或明确设置语言环境
(LC_COLLATE=C; echo [A-Z]*)
Run Code Online (Sandbox Code Playgroud)
或使用 bash globasciiranges
shell 选项
(shopt -s globasciiranges; echo [A-Z]*)
Run Code Online (Sandbox Code Playgroud)
见Pattern matching
部分man bash