我有一堆二进制文件,我知道在这些二进制文件中有我想找到的字符串。
我想做一个:
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)
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 的周围上下文。