次のようなトリックで特定のサイズのファイルを作成することがよくあります
dd if=/dev/zero of=1gb.dd bs=1M count=1024
またはおそらく
dd if=/dev/urandom of=1gb.dd bs=1M count=1024
dd if=/dev/random of=1gb.dd bs=1M count=1024
しかし、0 やランダムではなく、すべて 1 を取得したい場合はどうすればよいでしょうか。
ランダム データの場合、ほとんどすべての場合に を使用します/dev/urandom
。( も使用できますが/dev/random
、エントロピーに縛られているため、はるかに遅くなります。urandom
は から自己シードする PRNGrandom
です。)
ゼロ以外のファイルの場合、次のようなものをお勧めします。
perl -e 'print chr(0xff) x 1000' > t
もちろん、0xff と 1000 は好みに合わせてカスタマイズしてください。
これには の約 4 倍の時間がかかりますが、 crazyscot の回答dd if=/dev/zero
の Perl コマンドよりもわずかに長くなります。
touch shred.out; yes $'\xff' | tr -d $'\n' | shred --random-source=/dev/stdin --size=1G --iterations=1 shred.out
興味深いことに、この同様のコマンドは 1 GB に達する前に停止しました。
yes $'\xff' | tr -d $'\n' | dd if=/dev/stdin of=1gb.dd bs=1M count=1024
dd の後に別のコマンドを追加します。
sed 's/0/1/g' file.txt
すべての 0 を 1 に置き換えます。
おそらくより良い解決策がありますが、それはうまくいくはずです:-)
編集:実際には、その結果を新しいファイルにパイプするか、同じファイルを置き換える必要があります。sed はデフォルトで画面に出力します (IIRC)