grep バイナリファイルに対応するコマンド

grep バイナリファイルに対応するコマンド

私は多くのバイナリファイルを持っていて、そのファイルに私が探したい文字列が含まれていることを知っています。

私は次のようにしたいと思います:

grep -lir "the string I am looking for"

grep -lirその文字列を含むが明らかにそのファイルでは機能しない特定のディレクトリ内のすべてのバイナリファイルのリストを取得します。

このような検索を端末でできるコマンドはありますか?

答え1

このコマンドは、stringsファイルからすべてのASCIIデータを抽出し、出力を印刷するgrepとデータを取得できます。

strings <filename> | grep "search text"

答え2

そしてGNU grep、あなたはそれを使用することができます-ㅏバイナリファイルをテキストファイルとして扱うオプション:

grep -ali -- string file

あなたのgrepバージョンがそれをサポートしていない場合は、-a次のものを使用できます。確認する代わりに。 ack 1.xの場合はオプションを含める必要がありますが-a、ack 2.xの場合、デフォルトではテキスト以外のファイルは検索に含まれているため含まれません(テキスト以外のファイルはファイルが指定されていない場合にのみ無視されます)。

答え3

あなたの質問はパターンを含むバイナリを見つけることです(私たちはすでに素晴らしい答えを持っています!)。補足的に、我々は事件の発生を得ることを望むかもしれない。

よく使う

grep -aPo '.{0,20}pattern.{0,20}'  binfile

周囲の状況の20文字を取得します。

答え4

bgrep行が必ずメモリに収まらない場合

時々私はこのランダムリポジトリに戻ります。https://github.com/tmbinc/bgrep取付ける:

curl -L 'https://github.com/tmbinc/bgrep/raw/master/bgrep.c' | gcc -O2 -x c -o $HOME/.local/bin/bgrep -

使用:

bgrep `printf %s saf | od -t x1 -An -v | tr -d '\n '` myfile.bin

出力例:

myfile.bin: c80000003
\x02abc
myfile.bin: c80000007
dabc

メモリに収まらないファイルに対してこれをテストしましたが、うまく動作します。

以下に詳細を提供しました。大容量のバイナリファイルを収集する最良の方法は何ですか?

関連情報