如何使用bash随机数据创建多个文件

时间:2013-06-11 00:40:19

标签: macos bash shell scripting

如何在OS X中使用随机数据创建多个文件(超过20k,我需要这些文件来运行syncy的测试)?我使用了之前回答的问题(How Can I Create Multiple Files of Random Data?)建议使用类似

的内容
dd if=/dev/random bs=1 count=40000 | split -b 2

但是使用它会给我一个错误,说明文件太多。我可以用其他方式创建一个循环来创建包含任意随机数据的文件吗?

3 个答案:

答案 0 :(得分:18)

您可以使用shell for循环执行此操作:

for i in {1..20000}; do dd if=/dev/urandom bs=1 count=1 of=file$i; done

根据需要调整countbs,以制作您关注的尺寸的文件。请注意,我更改为/dev/urandom以防止阻止。

您也可以添加一些>/dev/null 2>&1来安静下来。

答案 1 :(得分:5)

您的方法不起作用的原因是split的默认后缀(2个字母字符)对于2万个文件来说不够大。如果添加几个选项:

dd if=/dev/random bs=1 count=40000 | split -b 2 -d -a 5

(其中-d表示“使用数字,而不是字母字符,后缀”和-a 5表示“使用长度为5的后缀”),它应该正常工作 - 我用{测试它在GNU / Linux机器上{1}}(为了速度)没有问题。

请注意,这比其他答案的for-loop方法快得多(2.5秒与Carl Norum在我的机器上的答案为43秒)。

答案 2 :(得分:4)

不确定您是否有任何文件命名要求,但可能是:

for x in {1..20000}; do
  dd if=/dev/random of=test$x.dat bs=10000 count=4
done