生成固定大小的隨機檔案

honvid發表於2019-02-16

近期有個需求,需要大量的檔案,隨機生成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

相關文章