这里的单词file
指的是shell file命令,而不是实际的文件。例如,我想确定文件是否是视频文件(.mpg
,.mkv
,.avi
)。file
在返回image
(图像文件)、video
(视频文件)和audio
(音频文件)(以及application/x-empty
(出于某种原因))方面非常出色。我的问题是这对于识别类型有多可靠。如果我做一个简单的
file -ib deliverance.avi | grep video
字符串
这是否适用于这里列出的所有主要视频文件?
3条答案
按热度按时间4uqofj5v1#
file
的结果并不完美,它对某些类型的文件的问题比其他类型的多。文件基本上只是以可预测的模式查找特定的二进制数据片段,以确定文件类型。不幸的是,特别是,一些经常用于视频的文件类型属于这种“有问题”的类别。较新的容器格式(如
.mp4
和.mkv
)通常有几种不同的MIME类型,这些类型应该正确地取决于所包含的数据类型。例如,.mp4
可以根据内容正确地标识为video/mp4
、audio/mp4
或application/mp4
。在实践中,
file
经常进行一些猜测,这些猜测只是符合一般的用法,而且它可能非常适合您。例如,虽然我提到了正确识别Matroska文件的一些理论困难,但file
基本上只是假设任何Matroska文件都是视频。另一方面,Ogg容器的使用在音频和视频之间分配得更均匀,我相信当前版本的file
只是将差异分开,并将Ogg文件标识为application/ogg
,这不会落入您的任何类别。有一件事我可以肯定的是,你想要最新版本的
file
,你可以得到你的手。包含要匹配的模式和匹配结果的MIME类型的“魔法”文件经常更新,以包含WebM等较新的文件类型,或者只是为了提高旧类型的准确性。cuxqih212#
文件的工作原理是引用一个“幻数”文件的文件头。我怀疑最好的方法是检查你的本地magic number文件(可能是/usr/share/magic,但请参阅man file了解详细信息),以查看你引用的列表中的文件类型。
yh2wf1be3#
它似乎应该适用于大多数视频/音频/图像文件。但是,如果没有,实际上有一个文件包含扩展名和类型之间的关系:
标识这些文件的信息从编译后的magic文件/usr/share/magic.mgc读取,如果编译文件不存在,则从/usr/share/magic读取。
请参阅:http://linux.about.com/library/cmd/blcmdl1_file.htm
希望这对你有帮助!