bash - 使用 for 循环和命令替换在特定目录中创建多个文件
问题描述
我刚刚创建了一个名为“years”的新目录,其中包含几个子目录,每个子目录都有一个年份的名称(即“1980”、“1981”...)。现在,我想在每个子目录中创建 12 个文件(每月一个文件)。
我需要使用 for 循环来执行此操作,其中还包含命令替换。我正在尝试的代码如下所示,尽管我的问题是我不知道如何在此处使用命令替换,也不知道如何在适当的子目录中创建这些文件(当我运行此代码时,它们是在我的家中创建的目录)。
for $years in 1980 1981 1982 1983 1984 1985; do
mkdir -p "$years"
case $years in 1980)
for i in 1 2 3 4 5 6; do
touch $i.txt
done
;;
esac
done
我的实际代码比这更长,每年有一个案例,有 12 个文件而不是 6 个。
我怎么能那样做?
注意:此任务需要使用案例语句(我正在按照课程活动的说明进行操作)
解决方案
您可以通过这种方式更改代码以在相应文件夹中创建文件:
#!/bin/bash
for years in 1980 1981 1982 1983 1984 1985; do
mkdir -p "$years"
case $years in 1980)
for i in {1..12}; do
touch "$years/$i.txt"
done
;;
esac
done
因此,您只需在 touch 命令中添加目录,否则您可以在第二个 for 循环之前执行cd "$years"并在完成之后执行cd ..。
推荐阅读
- json - 如何根据类型从示例 json 字典中获取所有父子 ID、名称值?
- javascript - 为什么这个属性不可枚举?
- react-native - 如何在 React Native 中使用 toBeVisible 匹配器
- java - Android:如何使用改造从 json 响应中获取特定字符串?
- python-3.x - 为什么 functools.cmp_to_key() 在比较时会给我一个类型错误?
- postgresql - 如何从 Ansible 获取 postgresql_query 结果
- java - main 的 JPanel 没有从另一个类更新
- java - 在 recyclerview 中加载拾取的联系人
- gcc - 如何找到包含某个版本的 libstdc++.so 的 GCC 版本?
- java - 为什么 AnnotatedElement.getAnnotation() 会出现编译错误?