it-swarm.com.de

Entsprechender Befehl zum Grep von Binärdateien

Ich habe eine Reihe von Binärdateien und ich weiß, dass in diesen Binärdateien Zeichenfolgen vorhanden sind, die ich finden möchte.

Ich möchte ein:

grep -lir "the string I am looking for"

und erhalten Sie eine Liste aller Binärdateien in einem bestimmten Verzeichnis, die diese Zeichenfolge enthalten, aber grep -lir funktioniert anscheinend nicht mit diesen Dateien.

Gibt es einen Befehl, der diese Art der Suche vom Terminal aus durchführen kann?

26
SpaceDog

Mit GNU grep können Sie die Option - a verwenden, um Binärdateien als Textdateien zu behandeln:

grep -ALi -- string file

Wenn Ihre grep-Version -a Nicht unterstützt, können Sie stattdessen ack verwenden. Bei ack 1.x müssen Sie die Option -a Einschließen, bei ack 2.x nicht, da bei der Suche standardmäßig Nicht-Text-Dateien eingeschlossen sind (nur Nicht-Text-Dateien werden ignoriert, wenn Sie dies nicht getan haben Dateien angeben).

26
cuonglm

Der Befehl strings extrahiert alle ASCII-Daten aus einer Datei. Wenn Sie dann grep ihre Ausgabe ausführen, können Sie nach Ihren Daten suchen:

strings <filename> | grep "search text"
26
NZD

Bei Ihrer Frage geht es darum, Binärdateien zu finden, die ein Muster enthalten (und wir haben bereits sehr gute Antworten!). Ergänzend möchten wir vielleicht die Vorkommen erhalten.

Ich benutze oft

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

um einen umgebenden Kontext von 20 Zeichen zu erhalten.

9
JJoao