bash - 使用 for 循环创建多个子目录
问题描述
我有一个名为 1990 的目录,我想使用 for 循环在其中创建 12 个子目录(每月一个)。另外,我希望每个子目录以一个月命名(即一月、二月、三月...,而不是 1、2、3...)。我也不知道应该在我的函数中以哪种方式指定目录的名称(即 1990)。
这就是我的想法:
for i in 1990; do
mkdir {January..December}
done
我这里的问题与目录本身以及大括号扩展不接受名称这一事实有关。
注意:如果有可能在此函数中创建目录 1990,那也可以。
解决方案
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
推荐阅读
- r - 如何为整个数据框指定 pivot_wider?
- python-3.x - 将列表数组转换为 numpy-nd 数组的问题
- java - 等待 spring 集成流程完成
- c# - 将库中的数据绑定到 XAML
- ios - 如何防止不同 Swift 单元格的标签彼此重叠显示?
- javascript - 在 Angular 12 Chrome Debug 上调试 TS 文件
- node.js - Discord.js 猫鼬连接失败
- python - Django Forms:未应用选择元素上的属性?
- serilog - 用于 C# 的 Serilog,写入文件延迟 3 分钟
- javascript - setAttribute 不覆盖另一个类属性