LoginSignup
0
0

More than 3 years have passed since last update.

手っ取り早く巨大サイズのファイルを作る

Posted at

手っ取り早く巨大ファイルを作る方法(小ネタ)です。

小難しいコマンドは使いません。
Windows, Linux どちらも(ほぼ)同じ方法でいけます。
(数学ネタも少しあります。)

Windows(DOS窓) の場合

まず適当なファイルを、メモ帳(notepad.exe)等で作ります。
(1バイトでも可です。)

そのファイルを、自分自身に上書き追加します。

type bigfile.txt >> bigfile.txt

これを繰り返すと、2のべき乗 でファイルサイズが増加します。
( 1, 2, 4, 8, 16, 32, ・・・ )

2019/08/30  23:50             1,024 bigfile.txt
    :
2019/08/30  23:50             2,048 bigfile.txt
    :
2019/08/30  23:50             4,096 bigfile.txt

数百MB程度なら、わりとすぐ作れます。

IN と OUT が同じファイルだから気になる~ という場合は、
2個のファイルで交互に上書き追加します。

type bigfile1.txt >> bigfile2.txt
type bigfile2.txt >> bigfile1.txt

これは1行にまとめられます。

type bigfile1.txt >> bigfile2.txt & type bigfile2.txt >> bigfile1.txt

この場合は、フィボナッチ数列 でファイルサイズが増加します。
( 1, 1, 2, 3, 5, 8, 13, ・・・ )

2019/08/30  23:58                 8 bigfile1.txt
2019/08/30  23:58                13 bigfile2.txt
    :
2019/08/30  23:58                21 bigfile1.txt
2019/08/30  23:58                34 bigfile2.txt
    :
2019/08/30  23:58                55 bigfile1.txt
2019/08/30  23:58                89 bigfile2.txt

さらに2ファイルのサイズの比は、黄金比 に近づきます。

2019/08/30  23:59           121,393 bigfile1.txt
2019/08/30  23:59           196,418 bigfile2.txt
    :
2019/08/30  23:59           317,811 bigfile1.txt
2019/08/30  23:59           514,229 bigfile2.txt
    :
2019/08/30  23:59           832,040 bigfile1.txt
2019/08/30  23:59         1,346,269 bigfile2.txt

参考
フィボナッチ数列と線形代数

Linux の場合

Linux (CentOS7) では、自分自身に上書き追加が できないようです。

[xxuser@xxhost ~]$ cat bigfile.txt >> bigfile.txt
cat: bigfile.txt: 入力ファイルと出力ファイルが同じです

詳しくは書きませんが、標準コマンドで自分自身に
無理に上書き追加しようとすると、暴走する可能性があります。
(てか暴走しました :sweat_smile:

なので Linux では、2ファイル交互方式です。

cat bigfile1.txt >> bigfile2.txt
cat bigfile2.txt >> bigfile1.txt

または1行にまとめます。

cat bigfile1.txt >> bigfile2.txt;cat bigfile2.txt >> bigfile1.txt

でも やっぱり Windows と同様、自分自身に上書き追加したい!
という方は、この記事の最後 をご覧ください。

注意点

上記コマンドを、調子に乗って連打しないでね :wink:

PC/サーバには、パーティションのサイズや、
メモリの上限があります。あと I/O wait とか。

マシンが重くならない程度に、気を付けて作ってください。

Linux で自分自身に上書き追加

Linux の章で、ファイルは自分自身に上書き追加できない、
と書きましたが、以下の方法があります。

tac bigfile.txt >> bigfile.txt

(一般的でないと思うので、ベータ版 として扱ってください。)

cat ではなく tac を使います。
CentOS7 で試したところ、暴走せずに1GBのファイルを作れました。

皆さまも よければ検証してください。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0