You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让bash/zsh的glob匹配区分大小写并按ASCII序排序?

问题:Glob匹配结果无法按ASCII字典序区分大小写排序

环境信息

$ /usr/bin/zsh --version
zsh 5.5.1 (x86_64-redhat-linux-gnu)

$ bash --version
GNU bash, version 4.4.20(1)-release (x86_64-redhat-linux-gnu)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>

需求

glob匹配结果需按**ASCII字典序(区分大小写)**排序:数字在前,大写字母(A-Z)次之,小写字母(a-z)最后;同前缀文件按数字顺序排列(如A.0应排在A.1之前)。

当前行为

zsh与bash表现一致,执行echo *得到的结果不符合预期:

$ echo *
9.0 9.1 a.0 A.0 a.1 A.1

按照要求,A.0应在a.0之前,A.1应紧跟A.0且在a.1之前,但当前排序结果不满足该规则。

已尝试但无效的操作

  • 临时设置LC_COLLATE=C后执行glob匹配:
    $ (LC_COLLATE=C; echo *)
    9.0 9.1 a.0 A.0 a.1 A.1
    
  • zsh专用排序参数尝试:
    # 数字排序参数(on)
    $ (LC_COLLATE=C; echo *(on))
    9.0 9.1 a.0 A.0 a.1 A.1
    
    # 普通排序参数(:o)
    $ (LC_COLLATE=C; echo *(:o))
    9.0 9.1 a.0 A.0 a.1 A.1
    

内容的提问来源于stack exchange,提问作者Mingfei Gao

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 09:09:58