如何检查一个大的二进制文件是否包含另一个文件的内容?

如何检查一个大的二进制文件是否包含另一个文件的内容?

我有一个大的二进制文件,例如一个 WAV 文件,我怀疑它可能包含一个较小的 WAV 文件的整个字节序列。

我如何检查是否有效?如果是的话,我如何找到起始位置?

就像是:

$ findguts big.wav small.wav
1234 # the contents of small.wav are found inside big.wav starting at byte #1234

答案1

perl

perl -l -0777 -ne '
  print "found at offset $o" if ($o = index($_, <STDIN>)) >= 0
  ' big.wav < small.wav

(请注意,这两个文件都加载到内存中,因此它不会扩展到非常大的文件)。

相关内容