从文本编辑器创建多个文件

时间:2016-08-31 10:01:50

标签: bash shell

我想从一个缓冲区创建许多文件。是否有捷径可寻?所以从

开始
foo1.txt
1a
1b
1c
1d

foo2.txt
2a
2b
2c
2d

foo3.txt
3a
3b
3c
3d

制作3个文件,名为foo 1 2和3 .txt,内容为。

有没有比这更糟糕的东西?

echo 1a > foo1.txt
echo 1b >> foo1.txt
echo 1c >> foo1.txt
echo 1d >> foo1.txt

编辑:抱歉,1a,1b等是为了象征我在文本编辑器中查找/替换的更复杂的内容。我认为HERE docs就是我想要的。干杯

4 个答案:

答案 0 :(得分:1)

喜欢这个?:

$ printf '1a\n1b\n1c\n1d\n' > foo1.txt
$ cat foo1.txt
1a
1b
1c
1d

或者也许:

for i in 1 2 3; do for j in a b c d ; do echo "$i""$j" >> foo"$i".txt ; done ; done

答案 1 :(得分:1)

您可以使用cat和heredocs编写多行文件:

cat > foo1.txt <<EOF
1a
1b
1c
1d
EOF

cat > foo2.txt <<EOF
2a
2b
2c
2d
EOF

cat > foo3.txt <<EOF
3a
3b
3c
3d
EOF

这将允许变量扩展,所以:

cat > test.txt <<EOF
$HOME
EOF

将生成包含主目录路径的文件。你可以通过以下方式来抑制它:

cat > test.txt <<"EOF"
$HOME
EOF

这将生成一个内容为$HOME的文件,而不是您的主目录的路径。

答案 2 :(得分:0)

基于詹姆斯的答案,但稍微简洁一点 -

   for i in {1..3} #Better if you have to do a lot of files
    do 
        for j in {a..d} #Ditto as above comment
        do 
            echo "$i""$j" >> foo"$i".txt 
        done 
    done

答案 3 :(得分:0)

您的问题标题与问题本身不符,因为没有涉及文本编辑器,但您可能正在寻找HERE文档:

    cat >foo1.txt <<EOT
1a
1b
1c
1d
EOT