
Windowsでこのようなことをする方法を見つけました。
echo "This is just a sample line appended to create a big file. " > dummy.txt
for /L %i in (1,1,21) do type dummy.txt >> dummy.txt
http://www.windows-commandline.com/how-to-create-large-dummy-file/
UNIXでファイルをコピーして追加し、プロセスを繰り返す方法はありますか?それはまるでfor .. cat file1.txt > file1.txt
?
答え1
yes "Some text" | head -n 100000 > large-file
そしてcsh
/ tcsh
:
repeat 10000 echo some test > large-file
そしてzsh
:
{repeat 10000 echo some test} > large-file
GNUシステムでは、以下も参照してください。
seq 100000 > large-file
または:
truncate -s 10T large-file
(10TiBスパースファイルの作成(非常に大きいがディスク容量を占有しない))および他の代替議論「0バイトが多いテストファイルの作成」。
そうするのはcat file >> file
悪い考えです。
cat
まず、出力ファイルと同じファイルの読み取りを拒否するいくつかの実装では機能しません。しかし、これを実行してこの問題を解決しても、内部バッファが内部バッファよりも大きいと、cat file | cat >> file
以前に作成したデータが読み込まれるため、無限ループに陥ります。file
cat
cat
また、回転しているハードドライブがサポートするファイルシステムでは、(メモリ内の可能なサイズより大きいサイズに達した後)、ドライブがデータを読み取る場所と書き込む位置の間を前後に移動する必要があるため、かなり非効率的です。
答え2
次のコマンドを使用して、Solaris で大きなファイルを作成できます。
mkfile 10g /path/to/file
Solaris(およびLinux)で動作する別の方法:
truncate -s 10g /path/to file
可能:
dd if=/dev/zero of=/path/to/file bs=1048576 count=10240
答え3
Linuxシステムで大容量ファイルを生成する最も簡単な方法は次のとおりですfallocate
。
sudo fallocate -l 2G bigfile
fallocate
ファイルシステムを動作させると、基本的には実際にデータセクタを書き込まないので、極度に早く。欠点は、rootとして実行する必要があることです。
ループで継続的に実行すると、数秒で最大のファイルシステムを埋めることができます。
~からman fallocate
Fallocateは、ファイルに割り当てられたディスク容量を操作して割り当てをキャンセルまたは事前割り当てするために使用されます。
fallocate システムコールをサポートするファイルシステムの場合、データブロックに対する IO を必要とせずにブロックを割り当て、初期化されていないとマークすることで、事前割り当てが迅速に行われます。これは、ファイルをゼロで埋めることによって生成するよりもはるかに高速です。
XFS(Linux 2.6.38以降)、ext4(Linux 3.0以降)、Btrfs(Linux 3.7以降)、およびtmpfs(Linux 3.5以降)をサポートします。
答え4
私が正しく理解した場合は、次のようなものを探しています。
echo "test line" > file;
for i in {1..21}; do echo "test line" >> file; done
これにより、「テストライン」が22回繰り返されるファイルが生成されます。特定のファイルサイズが必要な場合は、次の方法を使用できます(Linux上)。 1024は1KBです。
while [ $(stat -c "%s" file) -le 1024 ]; do echo "test line" >> file; done
個人的に大容量ファイルを作成したい場合は、2つのファイルを使用し、1つを別のファイルに挿入する方法を使用します。必要なサイズ(ここでは1 MB)に達するまでプロセスを繰り返すことができます。
echo "test line" > file;
while [ $(stat -c "%s" file) -le 1048576 ]; do
cat file >> newfile
cat newfile >> file
done
ファイルが制限を下回るとすべてが再び入る可能性があるため、このソリューションは必要なサイズを超えることがよくあります。
最後に、必要なサイズのファイルで実際に何も含める必要がない場合は、次のものを使用できますtruncate
。
truncate -s 1M file