覆盖文件的一部分而不修改未修改的内容

覆盖文件的一部分而不修改未修改的内容

我基本上想创建一个分配的文件,比如说 1GB 的内容。然后希望使用一些命令行实用程序,我想就地覆盖文件的一部分,假设仅开头 4 MB,而文件内容的其余部分保持不变。我检查过 cp 和 dd 但他们似乎没有这样的东西。也许我找错了地方和/或不理解某些选项的含义。

是的,我可以生成一个 C 程序来执行此操作,但我对可移植性的偏好是使用命令行情况。

有任何想法吗?

答案1

示例dd

$ cat data
insertion goes here: <...>

$ cat insert
ABC 123 XYZ

$ dd if=insert skip=4 count=3 of=data seek=22 bs=1 conv=notrunc
3+0 records in
3+0 records out
3 bytes transferred in 0.001 secs (2918 bytes/sec)

$ cat data
insertion goes here: <123>

我在这里使用的命令dd会跳过 4 个块到输入文件中,然后读取 3 个块。在向输出文件中查找 22 个块后,这些块将写入输出文件。输出不会被截断。一个块就是一个字节。

答案2

这对我有用:

$ echo aaaaaaaaaa > a
$ echo bbbbbbbbbb > b
$ dd if=a of=b conv=notrunc ibs=1 obs=1 seek=3 count=4
$ cat b
bbbaaaabbb

相关内容