如何用随机数据填充文件?


124

如何创建一个新文件,并用1 GB的随机数据填充它?我需要这个来测试一些软件。

我更喜欢使用/dev/random/dev/urandom


74
打开vivi -w randomfile和问别人谁从来没有见过vi退出程序。;)
通配符

1
刚来喜欢上面的评论来自Facebook的帖子!facebook.com/ProgrammersCreateLife/photos/a.241809332534619/...
Parixit

Answers:


171

在大多数Uniice上:

head -c 1G </dev/urandom >myfile

如果您head不理解G后缀,则可以以字节为单位指定大小:

head -c 1073741824 </dev/urandom >myfile

如果您head不理解该-c选项(这很常见,但不是POSIX;您可能拥有OpenBSD):

dd bs=1024 count=1048576 </dev/urandom >myfile

不要/dev/random在Linux上使用,请使用/dev/urandom


1
对于它的价值,我的Solaris 10计算机head不了解-c
rahmu 2012年

2
有趣的是head可以阅读/dev/urandom,但tail不能。
Stefan Lasiewski'3

21
@StefanLasiewski tail首先尝试转到输入文件的末尾,这花了很多时间(字面意思)。
吉尔斯2012年

啊,就像“ tail / dev / infinity”一样,如果有这样的设备。
Stefan Lasiewski 2012年

3
@StefanLasiewski /dev/zero如果您不喜欢变化,您也可以。
吉尔斯2012年

35

假设伪随机数据已足够,dd if=/dev/urandom of=target-file bs=1M count=1000就可以完成您想要的操作。

dd(1)将从输入文件读取数据块并将其写入输出文件。命令行语言有些古怪,但这是值得掌握基础知识的那些真正有用的工具之一。

在这种情况下if,输入文件,of输出文件,bs“块大小”-我使用GNU扩展名更方便地设置大小。(如果您dd没有GNU扩展,也可以使用1048576。) count是要读取if和写入的块数of

/dev/urandom/dev/random在Linux上,它是一个比选择更好的选择,它会退回到强大的伪随机数据上,而不是在耗尽真正的随机数据时阻塞。

您可能还想看看http://www.random.org/,这是获取一些随机数据而不必自己生成的另一种方法。


3
注意- 1M并非每种标准dd型号都提供类似的设备规格。如果您的版本dd受到影响,请使用bs=1048576
克里斯·

4
示例命令将创建一个包含1,000,000个块的文件,每个块的大小为1 MB。那大约是1 TB(1M x 1MB),而不是1 GB(也就是1K x 1MB)。顺便说一句,对于给定数量的输出数据,增加块大小并减少块数往往会产生更好的吞吐量。
CVn 2012年

2
while true;do head /dev/urandom | tr -dc A-Za-z0-9;done | head -c 5000K | tee  5000kb

用于生成5MB随机字符数据。如果需要其他大小,请更改-chead 的值,更改输出文件名,执行并等待执行完成。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.