如何从终端创建一个无限重复一组单词的文件?我需要它来创建一个巨大的文件用于解析目的,例如 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.txt
foo.txt
为空(这是您的目标文件)。您现在可以运行以下循环将多次的内容写入bar.txt
:
while [ $(stat --format "%s" bar.txt) -lt 150 ]
do
cat foo.txt >> bar.txt
done
解释:
stat --format "%s" bar.txt
bar.txt
显示字节大小。while [ $(stat --format "%s" bar.txt) -lt 150 ]
重复下列操作,直到达到目标大小(本例中为 150 字节)。cat foo.txt >> bar.txt
追加内容foo.txt
到bar.txt