mkdir -p 可一次性递归创建多层目录,自动补全缺失父目录且不报错;支持批量路径、大括号展开、变量引用及循环处理,是安全高效的目录创建方式。

直接用 mkdir -p 就能一次性创建带层级的父子目录,无需逐级执行。
理解 -p 参数的作用
-p(parent)选项会自动创建路径中所有不存在的上级目录。即使中间某层目录已存在,也不会报错,命令仍会继续完成后续创建。
- 例如:
mkdir -p a/b/c会依次检查并创建a、a/b、a/b/c - 若
a已存在,它跳过创建a,只建a/b和a/b/c - 没有
-p时,mkdir a/b/c会提示no such file or directory
批量创建多个父子目录结构
可以在一条命令中列出多个路径,用空格分隔:
mkdir -p project/src project/bin project/docsmkdir -p logs/2024/04 logs/2024/05 logs/2024/06- 支持混合深度:
mkdir -p x/y/z a/b c
所有路径都会被独立解析并确保完整层级存在。
配合变量或循环实现动态批量创建
当目录名有规律时,可用 shell 循环提升效率:
- 按数字批量:
for i in {1..3}; do mkdir -p app/v$i/{config,logs,data}; done - 从列表读取:
cat dirs.txt | xargs -I {} mkdir -p {}(dirs.txt每行一个路径) - 避免错误中断:加
-v查看过程,或重定向错误:mkdir -p path1 path2 2>/dev/null
注意事项与常见问题
使用 mkdir -p 时注意权限和路径合法性:
- 路径不能以
/开头(除非是绝对路径且你有权限),否则可能误操作根目录下结构 - 目录名中避免空格;如必须含空格,用引号包裹:
mkdir -p "my project"/src - 同名文件存在会报错(
mkdir: cannot create directory ‘xxx’: File exists),但-p可安全忽略该错误 - 创建后默认权限由 umask 控制,如需指定权限,加
-m:mkdir -p -m 755 a/b/c


















