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の方がはるかに高速かもしれませんが、スクリプトは明らかに最適ではありません。
与えられたサイズのダミー(バイナリ)ファイルを生成する、より速くて良い方法を私に提案してくれませんか?
head
コマンドを試すことができます:
$ head -c 100000 /dev/urandom >dummy
この目的でddを使用できます。
dd if=/dev/urandom bs=1024 count=5 of=dummy
ご了承ください
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つの注意点があります。
しかし、forループのより単純な形式がまだあります。
for x in {0..100000}
do
echo a
done >> dummy.Zip
これにより、100,000バイトのテキストファイルが生成されます。
yes 123456789 | head -10000 > dummy.file
$ openssl Rand -out random.tmp 1000000
ファイルシステムがext4、btrfs、xfs、またはocfs2であり、内容を気にしない場合は、fallocate
を使用できます。大きなファイルが必要な場合は、これが最速の方法です。
fallocate -l 100KB dummy_100KB_file
詳細については、「 Linuxシステムで大きなファイルをすばやく作成しますか? 」を参照してください。
たぶん
dd if=/dev/zero of=/dummy10MBfile bs=1M count=10
簡単な方法:
ファイルテストを作成し、「test」という1行を入力します
次に実行します:
cat test >> test
1分後にctrl + cを押すと、ギガバイトが大量に発生します:)
echo "ファイルから単語を順番に印刷するには" c = 1 for w in cat file
エコー "$ c。$ w" c = expr $c +1
完了