如何只获取二进制文件的前十个字节

Use*_*er1 67 binary bash

我正在编写一个bash脚本,需要获取文件的头(前10个字节),然后在另一个部分中获取除前10个字节之外的所有内容.这些是二进制文件,将有可能\0的,并\n在整个前10个字节的.似乎大多数实用程序都使用ASCII文件.实现这一任务的好方法是什么?

psm*_*ars 118

要获得前10个字节,如前所述:

head -c 10
Run Code Online (Sandbox Code Playgroud)

获得除前10个字节之外的所有字节(至少使用GNU tail):

tail -c+11
Run Code Online (Sandbox Code Playgroud)

  • 是.我喜欢`dd`的想法,但是这个选项不需要改变缓冲区大小,所以它适用于大文件.谢谢. (2认同)

moo*_*dow 37

head -c 10 在这里做对了.

  • 有趣的是,这个答案是第一个,它是正确的,但其他人有更多的赞成. (8认同)
  • @robert这可能是因为这只是部分答案。 (4认同)

Mar*_*som 31

您可以使用该dd命令从二进制文件中复制任意数量的字节.

dd if=infile of=outfile1 bs=10 count=1
dd if=infile of=outfile2 bs=10 skip=1
Run Code Online (Sandbox Code Playgroud)

  • 这可行,但速度相当慢。10 的 bs 正在杀死这些巨大的文件。有没有更快的方法来跳过前十个字节?看起来很简单。 (2认同)