26

bashでダミーファイルを生成したいです。ランダムであればいいのですが、すべて同じバイトでもかまいません。

私の最初の試みは次のコマンドでした:

rm dummy.zip;
touch dummy.zip;
x=0;
while [ $x -lt 100000 ];
do echo a >> dummy.zip;
  x=`expr $x + 1`;
done;

問題は、そのパフォーマンスの悪さでした。私は Windows で GitBash を使用しているため、Linux でははるかに高速になる可能性がありますが、スクリプトは明らかに最適ではありません。

指定されたサイズのダミー (バイナリ) ファイルを生成するためのより迅速で優れた方法を教えてください。

4

8 に答える 8

51

コマンドを試すことができますhead

$ head -c 100000 /dev/urandom >dummy
于 2012-03-21T07:45:52.803 に答える
12

この目的でddを使用できます。

dd if=/dev/urandom bs=1024 count=5 of=dummy
  • if:= ファイル内
  • of:= 出力ファイル
  • bs:= ブロックサイズ

ご了承ください

 x=`expr $x + 1`;

bashで計算する最も効率的な方法ではありません。二重丸括弧で算術整数計算を行います。

 x=((x+1)) 

しかし、ループ内のインクリメント カウンターについては、for ループが考案されました。

x=0;
while [ $x -lt 100000 ];
do echo a >> dummy.zip;
  x=`expr $x + 1`;
done;

対照的に:

for  ((x=0; x<100000; ++x))
do
    echo a 
done >> dummy.zip 

以下の 3 点に注意してください。

  • [ の場合とは異なり、括弧内のスペースは必要ありません。
  • ここでプレフィックス (またはポストフィックス) のインクリメントを使用できます: ++x
  • ファイルへのリダイレクトはループから抜け出します。1000000 回の開閉手順の代わりに、ファイルは 1 回だけ開かれます。

しかし、より単純な for ループの形式がまだあります。

for x in {0..100000}
do
    echo a 
done >> dummy.zip 
于 2012-03-21T08:02:52.220 に答える
10

これにより、100,000 バイトのテキスト ファイルが生成されます。

yes 123456789 | head -10000 > dummy.file
于 2012-03-21T13:21:44.720 に答える
5
$ openssl rand -out random.tmp 1000000
于 2015-03-11T13:25:42.190 に答える
0

もしかして

dd if=/dev/zero of=/dummy10MBfile bs=1M count=10
于 2018-09-03T13:02:58.300 に答える