大容量のバイナリファイルに他のファイルの内容が含まれているかどうかを確認するには?

大容量のバイナリファイルに他のファイルの内容が含まれているかどうかを確認するには?

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

(両方のファイルはメモリにロードされるため、非常に大きなファイルには拡張されません。)

関連情報