的联机帮助页grep
对该标志的描述-I
如下:
-I Ignore binary files. This option is equivalent to
--binary-file=without-match option.
它还对二进制文件说了这一点:
--binary-files=value Controls searching and printing of binary files.
Options are binary, the default: search binary files but do not print
them; without-match: do not search binary files; and text: treat all
files as text.
我无法想象我会关心二进制文件中的匹配的情况。如果存在这种情况,那肯定是例外而不是常态。为什么默认情况下不grep
忽略二进制文件而不是需要设置此标志来执行此操作?
答案1
并非 grep 认为的所有内容都是二进制文件,实际上都是二进制文件。例如,puppet 的日志中有 ansi 颜色编码,这使得 grep 认为它们是二进制的。如果我正在 /var/log 中查找,我仍然想搜索它们。
答案2
grep
当我编译程序并且链接器 ( ld
) 抱怨某些函数未找到时,搜索二进制文件的能力也很有用。我可以使用类似的命令
grep函数名/lib/lib*
找到包含它的库。 (库是二进制文件。)
答案3
要处理二进制文件或 grep 认为是二进制文件的文件,请使用
grep --binary-files=text "data" f1 f2