Linux高效技巧,一条命令轻松创建多个目录

admin
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:批量创建并列目录

假设需要同时创建 docslogstemp 三个并列目录,传统方法需执行三次命令:

Linux高效技巧,一条命令轻松创建多个目录

mkdir docs
mkdir logs
mkdir temp

而使用大括号扩展,一行即可搞定:

mkdir -p {docs,logs,temp}

执行后,当前目录下会同时创建 docslogstemp 三个目录,且无需担心父目录缺失问题(若父目录不存在,-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_1backup_5,或 data_2023data_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_1backup_3backup_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}

这种方式在批量管理用户目录或服务器环境时非常实用。

注意事项

  1. Shell兼容性:大括号扩展是Bash、Zsh等现代Shell的标准功能,但在默认为sh的旧环境中可能不支持,若需兼容,可改用for循环或seq命令结合mkdir
  2. 目录名冲突-p选项会忽略已存在的目录,若目标目录已存在,命令不会报错也不会覆盖,因此无需担心重复创建问题。
  3. 特殊字符处理:若目录名包含逗号()或大括号(),需用引号包裹或转义,
    mkdir -p "dir{with,commas}"  # 创建 "dir{with,commas}" 目录(含逗号)
    mkdir -p dir\{with,braces\}   # 创建 "dir{with,braces}" 目录(需转义)
  4. 权限问题mkdir会使用当前用户的默认权限创建目录,若需指定权限(如755),可结合chmod
    mkdir -p {docs,logs} && chmod 755 docs logs

通过mkdir -p与大括号扩展的组合,Linux用户可以高效实现批量目录创建,无论是简单的并列目录、复杂的多级嵌套结构,还是带序号的目录序列,都能一行命令搞定,这一技巧不仅减少了重复操作,还降低了手动创建目录时可能遗漏层级的风险,特别适合开发运维、文件管理等高频场景。

掌握这一方法后,你会发现Linux命令行的“简洁之美”——用最小的操作

文章版权声明:除非注明,否则均为xmsdn原创文章,转载或复制请以超链接形式并注明出处。

取消
微信二维码
微信二维码
支付宝二维码