Linux下创建多个目录时,使用mkdir -p命令可大幅提升效率,该命令能一次性创建多级目录结构,无需逐级操作,且自动处理路径中不存在的父目录,避免报错,mkdir -p project/src/{test,dev,docs}可在当前目录下创建project/src及其下的test、dev、docs子目录,无需提前创建父目录,该技巧适用于复杂路径构建,减少重复操作,尤其适合项目初始化或批量目录管理场景,是Linux运维与开发中的实用高效技巧。
在Linux日常操作中,我们经常需要批量创建目录——比如搭建项目结构、整理文件分类、或部署应用时创建多级目录,如果逐个用mkdir命令创建,不仅效率低下,还容易出错,Linux的mkdir命令结合大括号扩展(Brace Expansion)功能,只需一行代码就能批量创建多个目录,大幅提升工作效率,本文将详细介绍这一技巧,并通过实例展示其灵活应用。
核心命令:mkdir -p + 大括号扩展
要一次创建多个目录,关键在于两个核心元素的组合:
mkdir -p:-p选项会自动创建不存在的父目录,且若目录已存在则不会报错,避免手动判断目录是否存在的麻烦。- 大括号扩展 :这是Bash、Zsh等Shell内置的功能,允许通过逗号分隔的列表批量生成多个字符串,再结合命令实现批量操作。
基础语法
mkdir -p 目录1 目录2 目录3 ... # 基础并列创建
mkdir -p {目录1,目录2,目录3} # 大括号扩展(更简洁)
实用场景与实例
场景1:批量创建并列目录
假设需要同时创建 docs、logs、temp 三个并列目录,传统方法需执行三次命令:

mkdir docs mkdir logs mkdir temp
而使用大括号扩展,一行即可搞定:
mkdir -p {docs,logs,temp}
执行后,当前目录下会同时创建 docs、logs、temp 三个目录,且无需担心父目录缺失问题(若父目录不存在,-p会自动创建)。
场景2:创建嵌套的多级目录
当需要创建带有层级关系的目录时(如项目目录结构),大括号扩展的优势更明显,创建一个 project 目录,其下包含 src(源码)、docs(文档)、tests(测试)三个子目录,且每个子目录下还需细分:
mkdir -p project/{src/{components,utils},docs/{api,user_guide},tests/{unit,integration}}
执行后,会生成如下完整目录结构:
project/
├── src/
│ ├── components/
│ └── utils/
├── docs/
│ ├── api/
│ └── user_guide/
└── tests/
├── unit/
└── integration/
若用传统方法,需逐层创建,至少执行6次mkdir命令,而大括号扩展一行即可完成,清晰且不易出错。
场景3:批量创建带序号的目录
有时需要创建一系列序号目录,如 backup_1 到 backup_5,或 data_2023 到 data_2025,此时可结合大括号扩展的序号生成功能:
# 创建 backup_1 到 backup_5
mkdir -p backup_{1..5}
# 创建 data_2023 到 data_2025,并附带 month 子目录
mkdir -p data_{2023..2025}/month
执行后,会生成:
backup_1/ backup_2/ backup_3/ backup_4/ backup_5/
data_2023/
└── month/
data_2024/
└── month/
data_2025/
└── month/
若需要递增步长(如间隔2),还可写成 {1..5..2},生成 backup_1、backup_3、backup_5。
场景4:混合固定名称与变量目录
实际场景中,可能需要部分目录名固定,部分动态生成,为不同用户创建 home/用户名/{docs,downloads} 目录:
users=("alice" "bob" "charlie")
for user in "${users[@]}"; do
mkdir -p "home/$user/{docs,downloads}"
done
或直接用大括号扩展(若用户名已知):
mkdir -p home/{alice,bob,charlie}/{docs,downloads}
这种方式在批量管理用户目录或服务器环境时非常实用。
注意事项
- Shell兼容性:大括号扩展是Bash、Zsh等现代Shell的标准功能,但在默认为
sh的旧环境中可能不支持,若需兼容,可改用for循环或seq命令结合mkdir。 - 目录名冲突:
-p选项会忽略已存在的目录,若目标目录已存在,命令不会报错也不会覆盖,因此无需担心重复创建问题。 - 特殊字符处理:若目录名包含逗号()或大括号(),需用引号包裹或转义,
mkdir -p "dir{with,commas}" # 创建 "dir{with,commas}" 目录(含逗号) mkdir -p dir\{with,braces\} # 创建 "dir{with,braces}" 目录(需转义) - 权限问题:
mkdir会使用当前用户的默认权限创建目录,若需指定权限(如755),可结合chmod:mkdir -p {docs,logs} && chmod 755 docs logs
通过mkdir -p与大括号扩展的组合,Linux用户可以高效实现批量目录创建,无论是简单的并列目录、复杂的多级嵌套结构,还是带序号的目录序列,都能一行命令搞定,这一技巧不仅减少了重复操作,还降低了手动创建目录时可能遗漏层级的风险,特别适合开发运维、文件管理等高频场景。
掌握这一方法后,你会发现Linux命令行的“简洁之美”——用最小的操作

