You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Bash通过数组或循环实现双列表目录/子目录创建?

当然有!用数组加循环的方式不仅更易读,后期修改目录列表也方便太多——不用在长长的单行命令里挤来挤去找位置修改。下面给你两种实用的实现方式:

方法一:数组+嵌套循环(推荐,支持特殊字符)

这种方式最稳妥,尤其是你的目录名可能包含空格或特殊字符时,数组能完美处理:

首先定义两个数组,分别存储主目录和子目录的列表:

main_dirs=("P01DH" "P02DL" "P03NH" "P04NL" "P05RH" "P06RL")
sub_dirs=("folder1" "folder2" "folder3" "folder4" "folder5" "folder6" "folder7" "folder8")

然后用嵌套循环遍历两个数组,逐个创建目录:

for main in "${main_dirs[@]}"; do
    for sub in "${sub_dirs[@]}"; do
        mkdir -p "$main/$sub"
    done
done

这种方式的优势:

  • 可读性极强,一眼就能看懂要创建的目录结构
  • 修改目录列表只需调整数组内容,不用动循环逻辑
  • 支持带空格或特殊字符的目录名(比如如果有"My Folder"这种目录,数组也能正常处理)

方法二:变量存储列表(适合无特殊字符的简单场景)

如果你的目录名都是纯字母数字、没有空格,也可以用字符串变量来存储列表:

main_dirs="P01DH P02DL P03NH P04NL P05RH P06RL"
sub_dirs="folder1 folder2 folder3 folder4 folder5 folder6 folder7 folder8"

然后循环创建:

for main in $main_dirs; do
    for sub in $sub_dirs; do
        mkdir -p "$main/$sub"
    done
done

注意事项:

这种方式不支持带空格的目录名,因为Bash会把空格当成元素分隔符,导致目录名被拆分,所以如果有特殊字符需求,还是优先用数组方法。

小技巧:预览要创建的目录

如果你怕误操作,可以先把mkdir -p换成echo,预览一下要执行的命令,确认没问题再改回mkdir -p:

for main in "${main_dirs[@]}"; do
    for sub in "${sub_dirs[@]}"; do
        echo "即将创建目录:$main/$sub"
        # mkdir -p "$main/$sub"
    done
done

内容的提问来源于stack exchange,提问作者data-cruncher524

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 07:11:10