首页 > 解决方案 > 使用 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 个。

我怎么能那样做?

注意:此任务需要使用案例语句(我正在按照课程活动的说明进行操作)

标签: bash

解决方案


您可以通过这种方式更改代码以在相应文件夹中创建文件:

#!/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 ..。


推荐阅读