如何将特定数量的空字节附加到文件中?

inc*_*to2 29 linux

我有一个写入几个文件的脚本,但我需要它们的特定大小。所以我想知道是否有一种方法可以使用标准命令行工具(例如,通过复制 from /dev/zero)将特定数量的空字节附加到文件中?

Sto*_*one 44

truncate比 快得多dd。要使用 10 个字节增大文件,请使用:

 truncate -s +10 file.txt 
Run Code Online (Sandbox Code Playgroud)

  • 它要快得多,因为它会生成一个稀疏文件,这在大多数情况下都是您想要的——但是如果您不想要一个稀疏文件,dd 方法将起作用。 (3认同)

Can*_*ğlu 37

你也可以试试这个

dd if=/dev/zero bs=1 count=NUMBER >> yourfile
Run Code Online (Sandbox Code Playgroud)

这将从 /dev/zero 读取并附加到您的文件 NUMBER 字节。


小智 7

以下是仅使用 dd 将 10MB 附加到文件的示例。

[root@rhel ~]# cp /etc/motd ./test
[root@rhel ~]# hexdump -C test |tail -5
000003e0  0a 0a 3d 3d 3d 3d 3e 20  54 65 78 74 20 6f 66 20  |..====> Text of |
000003f0  74 68 69 73 20 6d 65 73  73 61 67 65 20 69 73 20  |this message is |
00000400  69 6e 20 2f 65 74 63 2f  6d 6f 74 64 20 3c 3d 3d  |in /etc/motd <==|
00000410  3d 3d 0a                                          |==.|
00000413

[root@rhel ~]# dd if=/dev/zero of=/root/test ibs=1M count=10 obs=1M oflag=append conv=notrunc
10+0 records in
10+0 records out
10485760 bytes (10 MB) copied, 0.0208541 s, 503 MB/s

[root@rhel ~]# hexdump -C test |tail -5
00000410  3d 3d 0a 00 00 00 00 00  00 00 00 00 00 00 00 00  |==..............|
00000420  00 00 00 00 00 00 00 00  00 00 00 00 00 00 00 00  |................|
*
00a00410  00 00 00                                          |...|
00a00413
Run Code Online (Sandbox Code Playgroud)


Jer*_*emy 5

我的第一个猜测是:

dd if=/dev/zero of=myfile bs=1 count=nb_of_bytes seek=$(stat -c%s myfile)
Run Code Online (Sandbox Code Playgroud)

基本上,这个命令告诉 dd 在文件末尾“转到”并添加一些先前从 /dev/zero 读取的字节。

问候,