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

bac*_*i32 8 macos bash shell scripting

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

dd if=/dev/random bs=1 count=40000 | split -b 2
Run Code Online (Sandbox Code Playgroud)

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

Car*_*rum 18

你可以用shell for循环来做到这一点:

for i in {1..20000}; do dd if=/dev/urandom bs=1 count=1 of=file$i; done
Run Code Online (Sandbox Code Playgroud)

调整countbs根据需要制作您关注的文件大小.请注意,我更改/dev/urandom为阻止阻止.

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


lur*_*ker 5

不确定您是否有任何文件命名要求,但也许是这样的:

for x in {1..20000}; do
  dd if=/dev/random of=test$x.dat bs=10000 count=4
done
Run Code Online (Sandbox Code Playgroud)


Zer*_*eus 5

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

dd if=/dev/random bs=1 count=40000 | split -b 2 -d -a 5
Run Code Online (Sandbox Code Playgroud)

(这-d意味着"使用数字,而不是字母字符,后缀",-a 5意思是"使用长度为5的后缀"),它应该工作正常 - 我/dev/urandom在GNU/Linux机器上测试它(速度)没有问题.

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