温馨提示×

linux strings怎么查中文

小樊
36
2026-10-02 12:43:52
栏目: 智能运维

在 Linux 下用 strings 查中文字符串,需要注意一点:strings 默认是按可打印 ASCII 字符提取的,而中文通常是 UTF-8 多字节编码,所以默认情况下可能看不到完整中文,或者看到乱码/断断续续的字节。

下面给你几种实用方法。


一、直接用 strings(最简单,但可能不完整)

strings file

如果文件里是 UTF-8 中文,部分系统会显示出来,但 often 会断。


二、用 -e 指定编码(推荐)

UTF-8 中文

strings -e S file

或

strings -n 2 file

-n 2 表示最少 2 个字节才认为是字符串,对中文更友好


三、结合 grep 查中文(最常用)

查包含中文的行

strings file | grep -P '[\x{4e00}-\x{9fff}]'

或者:

strings -e S file | grep -P '[\x{4e00}-\x{9fff}]'

四、直接对二进制文件用 grep(不用 strings)

grep -a -P '[\x{4e00}-\x{9fff}]' file

-a 表示按文本处理二进制文件


五、查看编码,避免乱码

先确认文件编码:

file file

如果是 GBK:

iconv -f gbk -t utf-8 file | strings | grep 中文

六、实用组合示例

从二进制里提取中文(UTF-8)

strings -e S -n 3 binary | grep -P '[\x{4e00}-\x{9fff}]+'

从 ELF / 程序里找中文提示

strings -e S ./app | grep -P '错误|失败|成功|登录'

总结

  • strings 本身对中文支持一般
  • 最稳方案:strings -e S | grep 中文正则
  • 编码不对先 iconv

如果你愿意,可以告诉我:

  • 是 二进制 / ELF / 日志 / 压缩包?
  • 中文是 UTF-8 还是 GBK?

我可以给你精确命令。

0 踩