回答:
使用truncate
:
truncate -s 14M filename
からman truncate
:
DESCRIPTION
Shrink or extend the size of each FILE to the specified size
[...]
-s, --size=SIZE
set or adjust the file size by SIZE
注:truncate
お使いのシステムでは使用できない場合があります。たとえば、Mac OS Xではデフォルトでインストールされません(ただし、macportsなどを使用して簡単にインストールできます)。これらの場合はdd
、head
代わりにまたはを使用する必要があります。
touch
しかし、あなたは、単に実行できる必要はありませんtruncate -s 14M filename
、それが作成されますfilename
直接。
編集:最も簡単な方法はおそらくtruncate
Ashutosh Vishwa Bandhuの答えですが、@ offby1が指摘しているように、あなたが望んでいないかもしれないスパースファイルを作成します。以下のソリューションは、通常の完全なファイルを作成します。
次のコマンドは、呼び出された14メガバイトのファイルを作成しますfoo
:
fallocate
(コメントでそれを提案してくれた@Breakthroughに感謝し、それについて言及している以下のAhmed Masudの回答に投票してください。)
fallocate -l 14000000 foo
このコマンドはtruncate
、目的のファイルサイズに関係なく(瞬時に)高速であるため(大きなファイルでは低速になる他のソリューションとは異なります)、スパースではなく通常のファイルを作成するため、特に印象的です:
$ truncate -s 14MB foo1.txt
$ fallocate -l 14000000 foo2.txt
$ ls -ls foo?.txt
0 -rw-r--r-- 1 terdon terdon 14000000 Jun 21 03:54 foo1.txt
13672 -rw-r--r-- 1 terdon terdon 14000000 Jun 21 03:55 foo2.txt
ランダムデータで満たされたファイルを作成する
dd if=/dev/urandom of=foo bs=14MB count=1
または
head -c 14MB /dev/urandom > foo
\0
sで満たされたファイルを作成します。
dd if=/dev/zero of=foo.txt bs=14MB count=1
または
head -c 14MB /dev/zero > foo
別のファイルの最初の14MBのデータで満たされたファイルを作成します。
head -c 14MB bar.txt > foo
別のファイルの最後の14MBのデータで満たされたファイルを作成します。
tail -c 14MB bar.txt > foo
上記のすべての例で、ファイルは必要に14*1000*1000
応じて14*1024*1024
に置き換えMB
られM
ます。例えば:
dd if=/dev/urandom of=foo bs=14M count=1
head -c 14M /dev/zero > foo
fallocate
バイトのみの取引なので、あなたはする必要があります(14 * 1024 * 1024 = 14680064)
fallocate -l 14680064 foo
dd
より単純で、破壊の可能性が低いアプローチがある場合は、使用しないことをお勧めします。
dd
ソリューションには非ddの選択肢があります。
マジックを使用するdd
;)manページ
$ dd if=/dev/zero of=output.dat bs=1024 count=14336
原因14MB * 1024 = 14336KB、または:
$ dd if=/dev/zero of=output.dat bs=1MB count=14
そして、あなたはゼロで満たされた14MBのoutput.datファイルを取得します:D
これはそれをする最も速い方法であるはずです:
SEEK=$SIZE-1
dd if=/dev/zero of=outfile bs=1 seek=$SEEK count=1
それ以外の場合は、正確な位置にシークし、1バイトを書き込む、高速でダーティなCまたはperlプログラムを作成します。これは、ブロックに実際にデータをダンプするよりもはるかに高速です。
スパースファイルを回避する場合は、Linux(および他のシステム)でfallocate -l <length>
from を使用できますutil-linux
。
それが利用できず、POSIX準拠のシステムを使用している場合、posix_fallocate()ライブラリー呼び出しを使用して、迅速でダーティーなプログラムを作成できます。posix_fallocateは、指定された範囲の割り当てを保証するため、正常に返された場合、その後の範囲の使用時にディスクがいっぱいになることはありません
一方でdd
それを行うための移植可能な方法で、コマンドmkfile
とはxfs_mkfile
、この目的のために特別に書かれており、高速化されています。
mkfile size[b|k|m|g] filename
xfs_mkfile size[b|k|m|g] filename
キャッチは、どちらのコマンドも普遍的に利用できないため、移植可能なスクリプトを書くのには適していません。ただし、コマンドラインを介して対話的に行う場合は、これらが使用するコマンドです。
デフォルトでは、スパース(または「穴あき」)ファイルではなく、ゼロで埋められたファイルを作成します。両方とも、-n
代わりにスパースファイルを作成するオプションを取ります。