在Linux下创建n个目录可以通过多种方法实现,以下是几种常见且高效的方式:
1. 使用`mkdir`搭配大括号扩展(Brace Expansion)
bash
mkdir dir{1..n}
示例:创建10个目录(dir1到dir10):
bash
mkdir dir{1..10}
特点:大括号扩展是Bash的特性,生成连续的目录名称,效率高且语法简洁。支持零填充(如`dir{001..100}`生成`dir001`到`dir100`)。
2. 循环结合`mkdir`(适用于复杂命名)
bash
for i in {1..n}; do mkdir "目录_$i"; done
示例:创建5个名为“目录_1”到“目录_5”的中文目录:
bash
for i in {1..5}; do mkdir "目录_$i"; done
扩展:可在循环内加入条件判断或更复杂的逻辑,例如跳过已存在的目录:
bash
for i in {1..10}; do [ ! -d "dir$i" ] && mkdir "dir$i"; done
3. `seq`命令生成序列(兼容性更强)
bash
seq 1 n | xargs -I{} mkdir dir{}
说明:`seq`生成数字序列,通过`xargs`传递给`mkdir`。适合非Bash环境(如`sh`)。
示例:创建20个目录:
bash
seq 1 20 | xargs -I{} mkdir folder_{}
4. 使用`mkdir -p`创建多级目录
bash
mkdir -p parent_dir/{subdir1,subdir2,...,subdirn}
用途:一次性创建父子目录结构。例如:
bash
mkdir -p project/{src,bin,doc/{api,manual},logs}
5. 并行创建目录(提升速度)
bash
echo {1..100} | xargs -n 1 -P 8 mkdir
参数解释:
- `-n 1`:每个`mkdir`只处理一个参数。
- `-P 8`:并行8个进程,适合大量目录创建。
6. 使用`printf`与`mkdir`(精确控制格式)
bash
printf "dir%03d\n" {1..100} | xargs mkdir
效果:生成类似`dir001`、`dir002`的目录名,格式更规范。
进阶技巧:
目录命名包含变量或日期:
bash
for i in {1..5}; do mkdir "data_$(date +%F)_$i"; done
结合数组定义目录名:
bash
arr=("alpha" "beta" "gamma"); for dir in "${arr[@]}"; do mkdir "$dir"; done
避免目录已存在的错误:添加`-p`参数或前置检查:
bash
mkdir -p dir{1..50} # 忽略已存在目录
注意事项:
目录名含空格或特殊字符时,需用引号包裹(如`mkdir "测试 目录"`)。
权限问题:若目标目录无写权限,需使用`sudo`。批量操作前建议先测试(例如替换`mkdir`为`echo`预览命令)。
通过这些方法,可以灵活应对不同场景下的批量目录创建需求,结合脚本能进一步提升自动化程度。