web-dev-qa-db-ja.com

特定のサイズのファイルを生成しますか?

example.fileという名前のファイルを生成したいのですが。私は使うことができた

touch example.file

しかし、ファイルのサイズをちょうど24MBにしたいと思います。 touchのマンページは確認済みですが、このようなパラメーターはありません。特定のサイズのファイルを生成する簡単な方法はありますか?

119
R_User

あなたはddを使うことができます:

dd if=/dev/zero of=output.dat  bs=24M  count=1

または

dd if=/dev/zero of=output.dat  bs=1M  count=24

または、Macでは

dd if=/dev/zero of=output.dat  bs=1m  count=24
152
Paul92

非組み込みのLinuxまたはCygwin(またはGNU coreutils)を備えたシステム)およびFreeBSDの場合:

truncate -s 24m example.file

これにより、nullバイトでいっぱいのファイルが作成されます。ファイルがすでに存在し、サイズが小さい場合は、nullバイトで要求されたサイズに拡張されます。ファイルがすでに存在し、サイズが大きい場合は、要求されたサイズに切り捨てられます。

Nullバイトはディスク領域を消費しません。ファイルは スパースファイル です。

多くのシステムでは、head -c 24m </dev/zero >example.fileはnullバイトでいっぱいの非スパースファイルを作成します。システムにhead-cオプションがない場合(一般的ですが、POSIXではありません)、代わりにdd bs=1024k count=24 </dev/zero >example.fileを使用できます(これはPOSIXに準拠しています)。

ファイルの内容を気にしない場合は、ddを使用するよりもはるかに高速です。

fallocate -l 24M filename

明らかに、24MBのファイルにddを使用しても、最近のシステムでは時間がかかりませんが、大きなファイルは著しく遅くなる可能性があります。

31
SArcher

あなたはddを使うことができます:

dd if =/dev/zero of = outputfile.out bs = 1024k count = 24

または、たまたまSolarisを使用している場合

mkfile 24m outputfile.out
14
BitsOfNix
FROM_NODE=N01;
echo; cd $MOUNT_PATH; pwd; ls -la; sleep 1; echo;
WHEN="$(date +%Y-%m-%d_%H-%M-%S)";
fallocate -l 10M $MOUNT_PATH/"$FROM_NODE"_"$WHEN".dump
ls -lha; echo;
0
Pascal Andy