私は多くのバイナリファイルを持っていて、そのファイルに私が探したい文字列が含まれていることを知っています。
私は次のようにしたいと思います:
grep -lir "the string I am looking for"
grep -lir
その文字列を含むが明らかにそのファイルでは機能しない特定のディレクトリ内のすべてのバイナリファイルのリストを取得します。
このような検索を端末でできるコマンドはありますか?
答え1
このコマンドは、strings
ファイルからすべてのASCIIデータを抽出し、出力を印刷するgrep
とデータを取得できます。
strings <filename> | grep "search text"
答え2
答え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
メモリに収まらないファイルに対してこれをテストしましたが、うまく動作します。
以下に詳細を提供しました。大容量のバイナリファイルを収集する最良の方法は何ですか?