piapia123
zh

bash 花括号展开

网络

所有处理都在浏览器本地完成,数据不上传服务器

输入
把文件拖到这里可直接载入
输出

粘贴一条或几条花括号模式,立刻得到逐项展开的结果。它按 bash 的语义来:`{a}` 与 `{a,b}` 不同 —— 前者不展开(原样保留 `{a}`),后者展开成 `a b`;而 `{1..1}` 又会展开成一项 `1`。区间支持步长(`{1..10..2}`)、倒序(`{10..1}`)、前导零补位(`{01..03}`)与字母区间(`{a..e}`),列表与区间可随意嵌套(`{a,b}{1,2}`)。转义的 `\{`、未闭合的 `{` 都按普通字符处理,不会报错。展开只生成字符串、不检查文件是否存在,与 bash 里 `echo` 的行为一致;全部运算在浏览器本地完成,模式不会上传。

功能

  • 逗号列表:`{a,b,c}` 展开成三项,前后缀原样保留
  • 数字区间与步长:`{1..10..2}` 得到 1 3 5 7 9
  • 倒序按起止自动反向:`{10..1}` 不用写负步长
  • 前导零补位:`{01..03}` 得到 01 02 03,宽度取两端更宽的那个
  • 字母区间:`{a..e}`、`{z..v}`,也支持步长与倒序
  • 嵌套与笛卡尔积:`{a,{b,c}}`、`{a,b}{1,2}`
  • 单元素 `{a}` 按 bash 语义不展开,而 `{1..1}` 展开成一项
  • 转义的 `\{` 与未闭合的 `{` 当普通字符,不报错
  • 可设每行最大展开数量,超过就报错而不是卡死浏览器
  • 每条模式一组,逐项可单独复制,也可一次复制全部

使用方法

  1. 一行粘一条模式,例如 `file{1..3}.txt`
  2. 结果立刻按行列出每一项,并给出展开数量
  3. 规模太大时调小「最大展开数量」
  4. 点行末的复制按钮取走单项,或用「复制全部」整块取走

常见问题

`{a}` 为什么不展开成 `a`?
因为这是 bash 的语义:花括号里既没有逗号、也不是合法区间时,它原样保留成 `{a}`。所以 `file{a}.txt` 得到的是 `file{a}.txt` 而不是 `filea.txt` —— 想得到后者,直接写 `filea.txt` 就行。真正会展开的「单元素」是区间 `{1..1}`(得到一项 `1`),这一对最容易混。
`{1..03}` 会补零吗?
会。只要区间两端任意一端写了前导零,展开结果就会补零,宽度取两端里更宽的那个。所以 `{1..03}` 得到 `01 02 03` 而不是 `1 2 03`。两端都不写前导零(`{1..3}`)时不补。
展开出来的文件名真的存在吗?
不检查。花括号展开只生成字符串,不碰文件系统、也不联网 —— 就像 bash 里 `echo file{1..3}.txt` 一样,哪怕三个文件一个都不存在,它也照样输出三个名字。
为什么会有展开数量上限?
因为 `{1..1000000000}` 这种模式枚举出来是几吉字节的文本,会直接把浏览器卡死。工具先只数个数(区间用算术、不枚举),超过上限就报错。默认上限 1000,可以按需要调大。

相关工具