bash: 在预定义位置拆分二进制文件

bash: Split binary file at predefined positions

我有二进制文件,其中包含 各种长度 的数据结构。我想将这些数据块保存到单独的文件中。每个块的大小是已知的。 split 命令可以很好地拆分文件,但它不会在第一个数据块之后停止。它将文件切成大小相等的片段。

因此,我目前的解决方案是将 splitcat 文件的其余部分重新组合在一起,遍历数据。这是非常笨拙的,在某些情况下甚至可能会失败。

在特定位置精确分割二进制文件的最佳方法是什么?

您可以使用两个独立的 dd 命令。一个是任意seek,一个是复制任意长度。

SEEK=501
BYTES=387
dd if=yourfile bs=$SEEK skip=1 | dd bs=$BYTES count=1 > lump.bin

注意:尽管与您实际尝试做的事情有悖常理,但为了获得最佳性能,请保持高块大小和低计数。我的意思是,如果你想要 8192 字节,请使用 bs=8192 count=1 而不是 bs=1 count=8192