我想生成一个名为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