web-dev-qa-db-ja.com

bashでダミーファイルを生成する

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の方がはるかに高速かもしれませんが、スクリプトは明らかに最適ではありません。

与えられたサイズのダミー(バイナリ)ファイルを生成する、より速くて良い方法を私に提案してくれませんか?

25
jabal

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

$ head -c 100000 /dev/urandom >dummy
49
kev

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

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

ご了承ください

 x=`expr $x + 1`;

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

 x=((x+1)) 

しかし、ループ内のインクリメントカウンターの場合、for-loopが発明されました。

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の開閉ステップの代わりに、ファイルは一度だけ開かれます。

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

for x in {0..100000}
do
    echo a 
done >> dummy.Zip 
11
user unknown

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

yes 123456789 | head -10000 > dummy.file
10
glenn jackman
$ openssl Rand -out random.tmp 1000000
4
vbarbarosh

ファイルシステムがext4、btrfs、xfs、またはocfs2であり、内容を気にしない場合は、fallocateを使用できます。大きなファイルが必要な場合は、これが最速の方法です。

fallocate -l 100KB dummy_100KB_file

詳細については、「 Linuxシステムで大きなファイルをすばやく作成しますか? 」を参照してください。

3
mivk

たぶん

dd if=/dev/zero of=/dummy10MBfile bs=1M count=10
0

簡単な方法:

ファイルテストを作成し、「test」という1行を入力します

次に実行します:

 cat test >> test

1分後にctrl + cを押すと、ギガバイトが大量に発生します:)

0
Stefan Certic

echo "ファイルから単語を順番に印刷するには" c = 1 for w in cat fileエコー "$ c。$ w" c = expr $c +1完了

0
Tenzing