![如何检查一个大的二进制文件是否包含另一个文件的内容?](https://linux22.com/image/183927/%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E4%B8%80%E4%B8%AA%E5%A4%A7%E7%9A%84%E4%BA%8C%E8%BF%9B%E5%88%B6%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E5%8C%85%E5%90%AB%E5%8F%A6%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E7%9A%84%E5%86%85%E5%AE%B9%EF%BC%9F.png)
我有一个大的二进制文件,例如一个 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
(请注意,这两个文件都加载到内存中,因此它不会扩展到非常大的文件)。