使用linux'file'命令确定类型(即图像,音频或视频)

时间:2011-11-12 01:28:12

标签: bash shell file-type

这里的file一词是指shell file命令,而不是实际文件。我想确定文件是否是例如视频文件(.mpg.mkv.avi)。 file非常适合返回image用于图像文件,video用于视频文件,audio用于音频文件(以及application/x-empty由于某种原因用于文本) 。我的问题是这对识别类型有多可靠。如果我做了一个简单的

file -ib deliverance.avi | grep video

是否适用于here概述的所有主要视频文件?

3 个答案:

答案 0 :(得分:10)

file的结果并不完美,某些类型的文件比其他文件有更多问题。文件基本上只是以可预测的模式查找特定的二进制数据片段以找出文件类型。

不幸的是,特别是,一些经常用于视频的文件类型属于这个“有问题”的类别。较新的容器格式(如.mp4.mkv)通常有几种不同的MIME类型,这些MIME类型应该正确地取决于所包含的数据类型。例如,.mp4可以正确地标识为video/mp4audio/mp4application/mp4,具体取决于内容。

在实践中,file经常做出符合常规用法的猜测,并且它可能非常适合您。例如,虽然我提到了正确识别Matroska文件的一些理论上的困难,file基本上只是假设任何Matroska文件都是视频。另一方面,Ogg容器的使用在音频和视频之间更均匀地分配,我相信当前版本的file只是将差异分开,并将Ogg文件识别为application/ogg,这不会不属于任何类别。

我可以肯定地说,你想要获得最新版本的file,你可以亲自动手。包含要匹配的模式和匹配产生的MIME类型的“魔术”文件会经常更新,以包含较新的文件类型(如WebM),或者只是为了提高旧类型的准确性。

答案 1 :(得分:1)

文件的工作原理是引用文件的标题与“幻数”文件。我怀疑最好的方法是查看文件是多么强大,以检查您的本地幻数文件(可能是/ usr / share / magic,但请参阅man文件以获取详细信息),以获取引用列表中的文件类型。

答案 2 :(得分:1)

它似乎适用于大多数视频/音频/图像文件。但是,如果没有,实际上有一个文件包含扩展名和它的类型之间的关系:

  

如果编译文件不存在,则从编译的魔术文件/usr/share/magic.mgc或/ usr / share / magic中读取标识这些文件的信息。

请参阅: http://linux.about.com/library/cmd/blcmdl1_file.htm

希望这有帮助!