生成一定大小的文件?

生成一定大小的文件?

我想生成一个名为example.file.我可以用

touch example.file

但我希望文件大小恰好为 24MB。我已经检查了 touch 的联机帮助页,但没有这样的参数。有没有一种简单的方法来生成一定大小的文件?

答案1

您可以使用 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

答案2

在非嵌入式 Linux 或 Cygwin(或任何具有 GNU coreutils 的系统)和 FreeBSD 下:

truncate -s 24m example.file

这将创建一个充满空字节的文件。如果文件已存在并且较小,则将其扩展为带有空字节的请求大小。如果文件已存在并且较大,则会将其截断为请求的大小。

空字节不占用任何磁盘空间,该文件是稀疏文件

在许多系统上,head -c 24m </dev/zero >example.file创建一个充满空字节的非稀疏文件。如果您的系统上head没有-c该选项(这很常见,但在 POSIX 中不存在),您可以使用dd bs=1024k count=24 </dev/zero >example.file它(这是 POSIX 兼容的)。

答案3

如果您不关心文件的内容,这比使用要快得多dd

fallocate -l 24M filename

显然,dd在现代系统上使用 24MB 文件不会花费任何时间,但较大的文件可能会明显变慢。

答案4

参考其他总结:

  • 截短
    • truncate -s 24M example.file
  • 错误定位
    • fallocate -l $((24*1024*1024)) example.file
    • 随机数据
      • head -c 24MB /dev/urandom > example.file
    • 零数据
      • head -c 24MB /dev/zero > example.file
  • DD
    • dd if=/dev/urandom of=example.file bs=24MB count=1
      • dd if=/dev/urandom of=example.file bs=4MB count=6

相关内容