如何从终端创建一个无限重复一组单词的文件?

如何从终端创建一个无限重复一组单词的文件?

如何从终端创建一个无限重复一组单词的文件?我需要它来创建一个巨大的文件用于解析目的,例如 2-4GB 大小。目前我正在手动将行复制粘贴到同一个文件中以增加大小。

答案1

有一个简单的方法可以使用以下命令多次重复一行yes

yes we have no bananas | head -n 10000 > out.txt

将导致 out.txt 包含 10,000 行内容,全部为“我们没有香蕉”。


要将输出限制为精确的字节数,请使用head选项-c而不是-n。例如,这将生成精确的 10 kB 文本:

yes we have no bananas | head -c 10000 > out.txt

答案2

Perl 有一个漂亮的x运算符:

$ perl -e 'print "foo\n" x 5'
foo
foo
foo
foo
foo

因此,作为一个简单的解决方案,您只需写入几百万次即可。例如,此命令创建了一个 3G 文件:

perl -e 'print "This is my line\n" x 200000000' > file

如果您需要指定精确的大小(在本例中为 2 GiB),您可以执行以下操作:

perl -e 'use bytes; while(length($str)<2<<20){ $str.="This is my line\n"} print "$str\n"' > file

答案3

我不推荐无限地重复文本,但你可以用 python 创建一个~2GB 的重复文本文件,就像这样……

python3 -c 'with open("bigfile", "w") as f: f.write(("hello world "*10+"\n")*2*10**7)'

这将打印“hello world”10次并创建一个新行,重复20,000,000次,将结果写入文件bigfile。 如果所有字符都是ASCII,那么每个字符都是一个字节,因此根据要写入的内容进行适当计算...

您的 CPU 可能已被占用。如果我尝试执行超过 10,000,000 行,我的 RAM 就会耗尽……

我正在烤面包机

答案4

您还可以使用while-loop。

示例:(foo.txt这是您的来源)的内容:

foo
bar
foobar

bar.txtfoo.txt为空(这是您的目标文件)。您现在可以运行以下循环将多次的内容写入bar.txt

while [ $(stat --format "%s" bar.txt) -lt 150 ] 
do 
    cat foo.txt >> bar.txt
done

解释:

  • stat --format "%s" bar.txtbar.txt显示字节大小。
  • while [ $(stat --format "%s" bar.txt) -lt 150 ]重复下列操作,直到达到目标大小(本例中为 150 字节)。
  • cat foo.txt >> bar.txt追加内容foo.txtbar.txt

相关内容