# linux 生成指定大小文件
Date: 2023-08-19


linux生成指定大小文件常用的几个命令：

- fallocate
- truncate
- dd
- head
- tail

 

#### **fallocate**

<!--more-->

```
$ fallocate -l 1M fallocate.tmp
$ ls -l
-rw-rw-r-- 1 garlic garlic 1048576 Aug 19 00:02 fallocate.tmp

```

\-l 参数以字节为单位支持 k/m/g

 

#### **truncate**

```
$ truncate -s 1M truncate.tmp
$ ls -l
-rw-rw-r-- 1 garlic garlic 1048576 Aug 19 00:07 truncate.tmp

```

\-s 参数类似上面-l

以上两个命令， 重复运行生成同样名称文件，如果存在文件大，生成的文件大小不变， 如果指定文件大，文件会变成指定大小。

 

#### **dd**

```
$ dd if=/dev/zero of=dd.tmp bs=1M count=1
1+0 records in
1+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00501926 s, 209 MB/s
$ ls -l
-rw-rw-r-- 1 garlic garlic 1048576 Aug 19 00:17 dd.tmp

```

- _if_ 输入文件
- _of_ 输出文件
- _bs_ 生成一块大小
- _count_ 生成块数

 

#### **head & tail**

```
$ head --bytes 1M /dev/zero > head.tmp
$ ls -l
-rw-rw-r-- 1 garlic garlic 1048576 Aug 19 00:19 head.tmp

```

```
$ tail --bytes 1M /dev/zero > tail.tmp
$ ls -l
-rw-rw-r-- 1 garlic garlic 1048576 Aug 19 00:19 tail.tmp

```

 

#### **另外几个**

**yes**

```
$ yes >> yes.tmp
^C
$ ls -l
-rw-rw-r-- 1 garlic garlic 322355200 Aug 19 00:23 yes.tmp
```

yes不断输出y直到被中断。使用ctrl+c中断

 

**seq**

```
$ seq 100 >> seq.tmp
$ ls -l
-rw-rw-r-- 1 garlic garlic       292 Aug 19 00:26 seq.tmp
```

seq是生成1..100的数字

 

 

#### 参考及引用：

https://www.baeldung.com/linux/create-file-of-given-size

https://stackoverflow.com/questions/257844/quickly-create-a-large-file-on-a-linux-system （yes）

https://www.cyberithub.com/how-to-create-a-large-file-in-linux-simple-easy-methods/#Method\_4\_Using\_seq\_command（seq）

图片from[廖素珠](https://www.facebook.com/groups/474930279315210/user/100011004948492/?__cft__[0]=AZWHs375OQVojHbOrZHbG2Y8h4Ck2L7IQecMTKEnNplVlSZdaOzP7niJY0kfH04EPSjtV14ogjdOuvkH9Q0vaCvsq5VlN_REwTmh02TbK16fNQ6BZ8tQqACU3ruEm9K3TLYyrtjghl67uCEdHBK13_SxlMy68tUZa1Myvixg3ntOEFLyErTsuKRaLouZXZ26JUE&__tn__=-UC*F)

