我有一堆二进制文件,并且我知道这些二进制文件里面有我想要查找的字符串。
我想做一个:
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
我已经对不适合内存的文件进行了测试,效果很好。
我已在以下位置提供了更多详细信息:grep 大二进制文件的最佳方法?