Plainnotes

grep 遇到二进制文件就跳过

2024-02-26 · 2 分钟工具

在日志目录里 grep error *,某些文件只回一句 Binary file xxx matches,看不到上下文。

因为文件里混进了非文本字节(NUL、非法 UTF-8),grep 判定为二进制,默认只报告匹配、不输出内容。

几个开关:

  • grep -a:把文件当文本处理,最常用。
  • grep -I:反向——跳过二进制文件(大写 i)。
  • grep --text:同 -a。

日志里出现 NUL 通常是程序写入了错误的内容,值得查一下来源,而不是只用 -a 掩盖。

rg 默认也会跳过二进制,用 rg -a。批量处理时先 file * 看类型,比一个个试快。