puk*_*puk 10 bash shell file-type
file这里的单词是指shell 文件命令,而不是实际文件.我想确定文件是否是一个,例如,视频文件(.mpg,.mkv,.avi).file非常适合返回image图像文件,video视频文件和audio音频文件(以及application/x-empty出于某种原因的文本).我的问题是这对识别类型有多可靠.如果我做了一个简单的
file -ib deliverance.avi | grep video
Run Code Online (Sandbox Code Playgroud)
这适用于此处列出的所有主要视频文件吗?
Joh*_*ess 11
结果file并不完美,某些类型的文件比其他文件有更多问题.文件基本上只是以可预测的模式查找特定的二进制数据片段以找出文件类型.
不幸的是,特别是,一些常用于视频的文件类型属于这个"有问题"的类别.较新的容器格式类似.mp4并且.mkv通常具有几种不同的MIME类型,这些MIME类型应该正确地取决于所包含的数据类型.例如,.mp4可以适当地确定为video/mp4,audio/mp4,或 application/mp4取决于内容.
在实践中,file通常会做出符合常规用法的猜测,并且它可能非常适合您.例如,虽然我提到了正确识别Matroska文件的一些理论上的困难,但file基本上只是假设任何Matroska文件都是视频.另一方面,Ogg容器的使用在音频和视频之间更均匀地分配,我相信当前版本file只是分割差异,并将Ogg文件识别为application/ogg不属于任何类别的Ogg文件.
我可以肯定地说,你想要最新版本的file你可以得到你的动手.包含要匹配的模式和匹配产生的MIME类型的"魔术"文件会经常更新,以包含较新的文件类型(如WebM),或者只是为了提高旧类型的准确性.