在不同的目录中创建多个文件

在不同的目录中创建多个文件

我需要创建 1000 个输入文件,其中包含:

x=i,i 从 1 到 1000 不等

y=5

每个文件都应放在单独的目录中。我尝试过:

mkdir inp
cd inp
max=1000
for ((i=1;i<=max;i++)); do
    mkdir dir{$i}
    cd dir{$i}
    cat input_file.txt
    x=i > input_file.txt
    y=5 >> input_file.txt
    cd inp
done

失败了

答案1

如果我理解正确的话,你想要的是这样的:

for ((i=1;i<=1000;i++)); do
    mkdir -p inp/dir$i
    printf 'x=%s\ny=5s\n' "$i" > inp/dir$i/input_file.txt
done

答案2

您的代码是错误的,最好使用cd ..而不是cd inp,并且 而touch不是catcat命令会为不存在的文件返回错误,touch请创建它)。此外,使用echo命令(或printf如在中所述)@terdon 回答) 写入文件。

因此,如果您只想使用不出现错误的代码,您可以按如下方式操作:

mkdir -p inp
cd inp
max=1000
for ((i=1;i<=max;i++)); do
    mkdir -p dir{$i}
    cd dir{$i}
    touch input_file.txt
    echo x=i >> input_file.txt
    echo y=5 >> input_file.txt
    cd ..
done

注意:如果您希望将文件命名为dir1,,dir2...而不是dir{1},,dir{2}...,只需删除{}mkdircd循环内命令:

    mkdir -p dir$i
    cd dir$i

maxNB2:您可以通过删除值或获取值作为参数来简化代码max;使用名为的脚本script.sh,执行时会像这样:

script.sh 100

和代码:

mkdir -p inp
cd inp
for ((i=1;i<=$1;i++)); do
    mkdir -p dir$i
    cd dir$i
    touch input_file.txt
    echo x=$i >> input_file.txt
    echo y=5 >> input_file.txt
    cd ..
done

相关内容