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

Shell中如何用Glob匹配后缀数字在指定区间的文件

错误原因

[]是Shell通配符(glob)的单字符匹配规则,仅匹配1个独立字符,括号内定义的是字符集范围,而非数字区间。你写的document[1-10]会被Shell解析为匹配后缀为单个字符0或1的document类文件,无法识别多位数的序号逻辑,这也是会返回document15、document28这类包含字符1的非目标文件的根本原因。

正确匹配方案

方案1:花括号数字扩展(主流Shell通用,写法最简洁)

Bash、Zsh等绝大多数日常使用的Shell都支持数字序列扩展语法,直接写区间即可自动展开为完整文件列表:

du -sh document{1..10}

执行时Shell会自动将document{1..10}展开为document1 document2 document3 ... document10,精准覆盖1到10的所有目标文件,不会产生误匹配。

方案2:拆分通配符(POSIX标准兼容,全Shell环境支持)

如果运行在不支持花括号数字扩展的极简Shell环境,可以拆分匹配规则,分别覆盖单数字序号和双数字序号10:

du -sh document[1-9] document10

规则逻辑:

  • document[1-9]:匹配document后接1-9单个数字的文件,对应document1到document9
  • document10:精确匹配序号为10的文件
    两个规则组合后完全覆盖1-10的目标范围,无任何误匹配风险。

方案3:结合seq命令(适合大跨度数字区间场景)

如果后续需要匹配更大范围的序号(比如1到100),手动写规则效率低,可以结合seq命令自动生成文件名列表:

du -sh $(seq -f "document%g" 1 10)
避坑提示

不要使用带*通配符的模糊规则匹配数字区间,*会匹配任意长度的任意字符,必然会把序号更长的非目标文件包含进结果。

内容的提问来源于stack exchange,提问作者Kusisi Karem

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 01:12:31