我在文件夹中点击某个文字时遇到了一些问题。
grep "Notifying status" -R
Binary file fix2.log matches
事实证明,包含文本的文件是 binary 。实际上它是一个日志文件(由PAC管理器创建),可以使用notepad ++(或任何其他文本文件)正确读取。我不确定为什么操作系统会将其确定为
当我执行ls
时,所有文件都会列出相同的-rwxr--r--
当我file fix2.log
时,它显示为data
是否有任何命令显示文件是否为二进制文件,例如来自ls
视图?
答案 0 :(得分:8)
在Linux / Unix下,查找不是“text / plain”的任何内容:
$ file -I -b /tmp/local-access.log
text/plain; charset=us-ascii
编辑:
实际上,由于file
在不同类型的文本文件之间进行分类,因此编码可能是更好的方法:
$ echo "Testing" | file -I -b -
text/plain; charset=us-ascii
$ echo "<html></html>" | file -I -b -
text/html; charset=us-ascii
$ echo "<?xml version="1.0"?><catalog></catalog>" | file -I -b -
application/xml; charset=us-ascii
$ echo "<?xml version="1.0"?><catalog></catalog>" | file --mime-encoding -b -
us-ascii
注意@ CharlesDuffy的评论如下。这只会检查一些头/尾信息,但是,1)这在所有非异国情况下都是足够的(大多数二进制文件不会在文件的正面和背面有纯文本),2)你不要如果输入具有任意长度(例如2G)
,则必须检查每个字节答案 1 :(得分:5)
grep
只是为其“二进制”测定寻找非ASCII内容。您可以使用-a
标志轻轻覆盖它,以假设所有内容都是文本:
grep -a "Notifying status" -R