如何将文件写入另一个文件

如何将文件写入另一个文件

我有一个大小为 9.0KB 的空文件(其中只有零),我需要向其中写入另一个文件(大小为 1.1KB),但第一个文件不得丢失其大小或其其余内容。因此,如果整个文件00000000000000...现在是,我需要在其中写入第二个文件并保留零不变。我尝试过使用dd- 文件大小调整,但没有成功。

dd if=out/one.img of=out/go.img

有人知道我该怎么做吗?

答案1

要覆盖目标文件的开头而不截断它,请给出notrunc转换指令:

$ dd if=out/one.img of=out/go.img conv=notrunc

如果您想要源文件的数据附加的到目的地,您可以使用指令来做到这一点seek

$ dd if=out/one.img of=out/go.img bs=1k seek=9

这表明dd块大小为 1 kiB,因此seek在写入之前前进 9 kiB。

您也可以将这两种形式结合起来。例如,要覆盖第二文件中的 1 kiB 块具有 1 kiB 源:

$ dd if=out/one.img of=out/go.img bs=1k seek=9 conv=notrunc

也就是说,它会跳过输出文件的前 1 kiB,用输入文件中的数据覆盖在那里找到的数据,然后关闭输出而不先截断它。

答案2

只需使用 shell 重定向运算符以读写模式打开目标文件,<>而不是使用截断来打开只写模式>

假设你想file2在上面写file1

cat file2 1<> file1

这将写入file2偏移file1量 0(在开头)。

如果要file2在 的末尾追加file1,请使用>>运算符。

cat file2 >> file1

您还可以file2在任意偏移处写入file1

{ head -c1000 # for 1000 bytes within or
  # head -n 10 # for 10 lines within
  cat file2 >&0
} <> file1 > /dev/null

尽管对于字节偏移,您可能会发现使用 Warren 的dd解决方案更方便。

相关内容