grep 二进制文件的等效命令

Duc*_*uck 33 grep

我有一堆二进制文件,我知道在这些二进制文件中有我想找到的字符串。

我想做一个:

grep -lir "the string I am looking for"
Run Code Online (Sandbox Code Playgroud)

并获取包含该字符串但grep -lir显然不适用于这些文件的特定目录中的所有二进制文件的列表。

是否有可以从终端进行此类搜索的命令?

NZD*_*NZD 37

该命令strings将从文件中提取所有 ascii 数据,如果您然后grep输出它,您可以搜索您的数据:

strings <filename> | grep "search text"
Run Code Online (Sandbox Code Playgroud)

  • @xeon:使用`strings` 并不总是好的,阅读[这里](http://lcamt​​uf.blogspot.com/2014/10/psa-dont-run-strings-on-untrusted-files.html) 了解更多细节。 (7认同)
  • 由于目标是确定*哪些* 二进制文件包含字符串,因此`strings -f` 会更合适。 (4认同)

cuo*_*glm 34

使用GNU grep,您可以使用-a选项使其将二进制文件视为文本文件:

grep -ali -- string file
Run Code Online (Sandbox Code Playgroud)

如果您的 grep 版本不支持-a,您可以使用ack代替。对于 ack 1.x,您需要包含-a选项,而对于 ack 2.x,则不需要,因为默认情况下搜索包含非文本文件(仅在未指定任何文件时忽略非文本文件)。


JJo*_*oao 11

您的问题是关于查找包含模式的二进制文件(我们已经有了很好的答案!)。补充我们可能想得到事件。

我经常用

grep -aPo '.{0,20}pattern.{0,20}'  binfile
Run Code Online (Sandbox Code Playgroud)

获取 20-char 的周围上下文。