【问题标题】:bash: Split binary file at predefined positionsbash:在预定义的位置拆分二进制文件
【发布时间】:2015-05-05 14:32:32
【问题描述】:

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

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

在某些位置精确切片二进制文件的最佳方法是什么?

【问题讨论】:

  • 这会有点手动,但你可以使用dd
  • 如果我没看错,dd 允许我复制任意大小的第一个块,但是我只能分别跳过输入和输出文件中的倍数。我需要偏移量和块大小作为独立参数。

标签: bash split binary


【解决方案1】:

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

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

【讨论】:

  • 谢谢。它解决了我的问题。这一点也不违反直觉。
  • 太棒了!在我的案例中节省了大量时间
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-18
  • 1970-01-01
  • 2010-09-30
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多