![文件 -i 与文件属性准确性,如何检查文件是否为文本文件](https://linux22.com/image/1180885/%E6%96%87%E4%BB%B6%20-i%20%E4%B8%8E%E6%96%87%E4%BB%B6%E5%B1%9E%E6%80%A7%E5%87%86%E7%A1%AE%E6%80%A7%EF%BC%8C%E5%A6%82%E4%BD%95%E6%A3%80%E6%9F%A5%E6%96%87%E4%BB%B6%E6%98%AF%E5%90%A6%E4%B8%BA%E6%96%87%E6%9C%AC%E6%96%87%E4%BB%B6.png)
我正在使用 ubuntu 18.04 LTS,我使用file -i
和find
其他 shell 命令来生成文件夹内的文本文件列表,它的运行效率高达 99.9%,但也有一些例外
从file -i
,它说text/plain
$ ls -al
total 520
drwxr-xr-x 2 pi pi 4096 Dec 16 17:58 .
drwxr-xr-x 4 pi pi 4096 Dec 16 17:58 ..
-rw-r--r-- 1 pi pi 262144 Dec 16 17:58 NvStorageFtwSpare.bin
$ file -i NvStorageFtwSpare.bin
NvStorageFtwSpare.bin: text/plain; charset=iso-8859-1
而从文件属性来看,它表示的是二进制
我使用 textedit 查看了文件内容,它确实是二进制的,那么如何获取有关文件是否为文本文件的准确信息?谢谢!
答案1
man file
说:
file 测试每个参数以尝试对其进行分类。有三组测试按以下顺序执行:文件系统测试、魔术测试和语言测试。第一个成功的测试会导致打印文件类型。
您可以尝试以下选项:
-k, --keep-going
Don't stop at the first match, keep going. Subsequent matches will be have the string ‘\012- ’ prepended. (If you want a
newline, see the -r option.) The magic pattern with the highest strength (see the -l option) comes first.
-l, --list
Shows a list of patterns and their strength sorted descending by magic(5) strength which is used for the matching (see also
the -k option).