Contents

在Linux中创建一定大小的文件

1. 概述

作为 Linux 用户,我们经常对文件进行各种操作。一个常见的操作是创建一个一定大小的文件。 在本教程中,我们将讨论实现此目的的各种方法。

2. 使用fallocate命令

fallocate  是一个通过创建文件来分配磁盘空间的简单命令。让我们创建一个 100 MiB 的文件:

$ fallocate -l 100M file1.txt
$ ls -lh file1.txt 
-rw-rw-r-- 1 groot groot 100M May 15 20:26 file1.txt

在这种情况下,我们使用*-l* 参数来表示文件的长度(以字节为单位)。

fallocate命令还接受人类可读格式的大小,如千字节 (K)兆字节 (M)千兆字节 (G)

3. 使用truncate命令

*truncate *命令可以将文件扩展或收缩到给定的大小。让我们用它来创建一个 200 MiB 的文件:

$ truncate -s 200M file2.txt
$ ls -lh file2.txt
-rw-rw-r-- 1 groot groot 200M May 15 20:36 file2.txt

在这里,我们使用*-s*参数来表示文件的大小(以字节为单位)。

请注意,如果文件存在并且它小于使用-s*选项指定的文件大小,则文件大小将增加到使用 ASCII NUL 字节的请求大小。如果现有文件的大小更大,则将其截断为请求的大小。*

4. 使用headtail命令

head 命令可以与*/dev/zero*文件一起使用,以创建一个填充了一组 ASCII NUL 字符的文件:

$ head --bytes 300K /dev/zero > file3.txt
$ ls -lh file3.txt
-rw-rw-r-- 1 groot groot 300K May 15 20:47 file3.txt

在这种情况下,–bytes选项表示所需的文件大小(以字节为单位)。 同样,tail  命令也可以同样的方式使用:

$ tail --bytes 1G /dev/zero > file4.txt
$ ls -lh file4.txt
-rw-rw-r-- 1 groot groot 1.0G May 15 20:52 file4.txt

5. 使用dd命令

dd 命令转换和复制文件。让我们使用dd创建一个 10 MiB 的文件:

$ dd if=/dev/zero of=file5.txt bs=1M count=10
10+0 records in
10+0 records out
10485760 bytes (10 MB, 10 MiB) copied, 0.0387031 s, 271 MB/s
$ ls -lh file5.txt
-rw-rw-r-- 1 groot groot 10M May 15 20:58 file5.txt

我们来看看论据:

  • if 表示输入文件
  • of 代表输出文件
  • bs 表示块大小(以字节为单位)
  • count 表示要复制的块数