Grep'二进制文件匹配'.如何获得正常的grep输出?

dav*_*ain 30 bash grep

我有一个grep脚本,可以递归搜索目录.

grep -n -R -e 'search term' -e 'second search term' ./ 
Run Code Online (Sandbox Code Playgroud)

但是我得到的结果如下.请注意,在JPG中找到匹配但没有实际结果.

Binary file ./jpg/00015928.jpg matches
Binary file ./jpg/00015296.jpg matches
Binary file ./jpg/00020072.jpg matches
Run Code Online (Sandbox Code Playgroud)

有没有办法像普通的grep搜索一样在输出中看到结果?

per*_*eal 55

尝试:

grep --text
Run Code Online (Sandbox Code Playgroud)

要么

grep -a 
Run Code Online (Sandbox Code Playgroud)

简而言之.这相当于--binary-files=text它应该显示二进制文件中的匹配项.

  • 请注意,如果您的输入文件确实是文本文件,但它包含例如中间的一些随机二进制字节,则您可能需要此标志,因为数据已损坏或“二进制内容”*启发式*失败。需要指定此标志的目的是避免在错误地“grep”二进制文件时意外输出原始二进制内容。传统上,将二进制内容输出到终端可能会弄乱整个终端,并且需要重置终端才能继续,但对于基于 UTF-8 的现代系统来说,这种情况不应该发生。 (8认同)
  • `-a, --text 处理二进制文件,就像它是文本一样;这相当于 --binary-files=text 选项。 (4认同)