近期有個需求,需要大量的檔案,隨機生成10000個大小為1K的檔案:
seq 10000 | xargs -i dd if=/dev/zero of={}.dat bs=1024 count=1
此方法生成隨機檔案的好處在於效率高(產生1G檔案大概1s),建立的檔案大小精確到位元組,使用null字元來填充檔案內容,檔案統計時沒有行(wc -l filename為0)
當然可以更為/dev/zero
為 /dev/random
或 /dev/urandom
, 缺點跟/dev/zero
比當然是效率會更低些了,生成個
100Mb 的檔案需要 10 秒左右,而且檔案並沒有可讀的內容,一般的情況基本上是滿足了。
seq 10000 | xargs -i dd if=/dev/random of={}.dat bs=1024 count=1
但在 Mac 中執行上面的命令則報錯:
xargs: illegal option -- i
usage: xargs [-0opt] [-E eofstr] [-I replstr [-R replacements]] [-J replstr]
[-L number] [-n number [-x]] [-P maxprocs] [-s size]
[utility [argument ...]]
最後使用 shell 來實現:
#!/bin/sh
for ((i=1; i<=10000; i++))
do
dd if=/dev/random of=$i".txt" bs=1024 count=1024
done