简短结论:strings 对大文件本身不一定“慢”,但在某些情况下会显得很慢,主要取决于文件大小、文件类型和使用方式。
下面分情况说明:
strings 本质是顺序扫描文件,不做复杂解析:
objdump、readelf 那样解析结构例如几十 GB 的普通二进制文件:
strings bigfile.bin > out.txt
在磁盘读取速度允许的情况下,通常能跑满 I/O。
✅ 建议:
strings bigfile > strings.txt
strings 输出可能比原文件还大✅ 限制长度或最小字符串长度:
strings -n 8 bigfile
例如:
strings bigfile | grep xxx | sort | uniq
瓶颈往往在 grep/sort,不是 strings
| 工具 | 速度 | 说明 |
|---|---|---|
strings |
快 | 顺序扫 |
grep -a |
类似 | 但无“最小长度”概念 |
bgrep |
快 | 二进制 grep |
xxd |
慢 | 转十六进制 |
readelf/objdump |
慢 | 解析结构 |
-n(减少无用字符串)pv 看进度(不影响速度)pv bigfile | strings -n 8 > out.txt
如果你愿意,可以告诉我:
strings 想干什么?我可以给你更具体的优化方案。