使用for循环和命令替换在特定目录中创建多个文件

时间:2018-09-27 15:25:12

标签: bash

我刚刚创建了一个名为“ years”的新目录,其中包含几个子目录,每个子目录的名称都为year(即“ 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个文件组成。

我该怎么办?

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

2 个答案:

答案 0 :(得分:0)

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

#!/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” ,在第二个for循环之前执行 cd .. 完成。

答案 1 :(得分:0)

您可以使用seq命令来获取数字序列,然后使用命令替换将其用作迭代的值:

for i in $(seq 1 12)