花括号展开是Shell语法特性,非mkdir功能,用于高效生成规律目录结构;支持连续{01..12}、离散{a,b,c}、组合及嵌套-p用法,需注意补零、空格与步长控制。

花括号展开(Brace Expansion)是 Shell 自带的语法特性,不是 mkdir 命令的功能。它在命令执行前由 Shell 解析并生成参数列表,因此高效、简洁,特别适合创建命名有规律的目录结构。
同级规则目录:用 {n..m} 或 {a,b,c} 快速生成
适用于名称连续或离散、无空格、无特殊字符的场景。Shell 会自动展开成多个独立参数传给 mkdir。
- 创建 log202401 到 log202412(注意补零):
mkdir log2024{01..12} - 创建离散名称:
mkdir {src,docs,config,test} - 组合使用:
mkdir project_{alpha,beta,gamma}_{v1,v2}→ 生成 6 个目录
嵌套目录结构:配合 -p 和多层大括号
mkdir -p 负责递归建目录,大括号负责生成路径组合。两者结合可一次性构建完整项目骨架。
- 标准项目结构:
mkdir -p project/{src/{main,test},docs,config} - 多层级日期目录:
mkdir -p logs/{2024,2025}/{01..12}/{01..31}(慎用,生成量大) - 避免空格干扰:大括号内不能有未转义的空格,
{a, b}会实际创建名为 “a” 和 “ b”(含前导空格)的目录
数字补零与步长控制:确保排序和命名一致性
不补零(如 {1..12})会导致字符串排序错乱(log20241
- 补零写法:
log2024{01..12}、data{001..100} - 指定步长:
mkdir item{0..20..5}→ item0 item5 item10 item15 item20 - 字母序列:
mkdir {a..z}或{A..Z},支持大小写混合
安全边界:什么时候不能用花括号?
一旦目录名来自外部输入(CSV、粘贴文本、日志提取)、含空格、中文、$ * ( ) [ ] 等 shell 元字符,花括号会展开失败或被截断,甚至引发命令注入风险。
- 错误示例:
mkdir {"my dir","log(2024)"}—— 括号和空格导致解析异常 - 正确替代:
while IFS= read -r line; do mkdir -p "$line"; done - 推荐原则:只对人工编写、完全可控、纯 ASCII 字符 + 数字的规则路径使用花括号

















