首页 > 解决方案 > 使用 for 循环创建多个子目录

问题描述

我有一个名为 1990 的目录,我想使用 for 循环在其中创建 12 个子目录(每月一个)。另外,我希望每个子目录以一个月命名(即一月、二月、三月...,而不是 1、2、3...)。我也不知道应该在我的函数中以哪种方式指定目录的名称(即 1990)。

这就是我的想法:

for i in 1990; do
    mkdir {January..December}
done

我这里的问题与目录本身以及大括号扩展不接受名称这一事实有关。

注意:如果有可能在此函数中创建目录 1990,那也可以。

标签: bash

解决方案


for m in {1..12}; do date -d "1990-$m-01" "+%Y/%B"; done | xargs mkdir -p

带范围的大括号扩展仅适用于整数。您必须列出所有月份的名称:

mkdir -p 1990/{January,February,March,April,May,June,July,August,September,October,November,December}

您还可以获取日期以将命令吐出并通过管道传输到外壳中:

for m in {1..12}; do date -d "1990-$m-01" "+mkdir -p %Y/%B"; done | sh

推荐阅读