我想识别给予我的shell脚本的输入文件的文件格式 - 无论是.pst
还是.dbx
文件。我检查了How to check the extension of a filename in a bash script?。这一个处理与txt
文件和两个方法给出了那里 -在bash shell中区分pst和dbx文件的正确方法
- 检查是否扩展名
txt
检查,如果MIME类型为
application/text
等我在
.pst
和尝试file -ib <filename>
.dbx
文件,它显示两者都为application/octet-stream
。但是,如果我只是做file <filename>
,然后我得到
此为DBX文件 -
file1.dbx: Microsoft Outlook Express DBX File Message database
这对于pst文件 -
file2.pst: Microsoft Outlook binary email folder (Outlook >=2003)
所以,我的问题是 -
it it bett呃每次使用MIME类型检测时输出可以是任何东西,我们需要一个适当的检查?
如何在这种情况下应用MIME类型检查 - 都返回“应用程序/八位字节流”?
更新
我不想做一个延伸为基础的检测,因为它似乎我们只是不能确定在Unix系统上,一个.dbx文件是一个真正的dbx文件。由于file <filename>
返回包含文件正确信息的行(例如“Microsoft Outlook Express DBX文件消息数据库”)。这意味着文件命令能够正确识别文件类型。那么为什么在file -ib <filename>
命令中没有得到正确的信息呢?
分析字符串输出file <filename>
会罚款吗?假设我只需要识别一系列Outlook家族的数据存储文件(MS Outlook Express,MS Office Outlook 2003,2007,2010等),这是否可取?像application/dbx
这种可以比较的小文本标识符就是我所需要的。
由于它们都是二进制文件,所以它们都返回'application/octet-stream`,并且它没有被指示做其他事情。没有什么能够阻止你将它添加到系统的`magic.mime`中(除了没有为dbx/pst文件类型设置实际的MIME类型) – Hasturkun 2011-02-02 09:47:50