max*_*zig 5 file-command file-format files
有时似乎标准file
命令(我的 Ubuntu 系统上的 5.04)不够复杂(或者我只是使用错误,这很可能)。
例如,当我在一个.exe
文件上运行它时,我非常肯定它包含一些存档,我希望输出如下:
$ improved-file foo.exe
foo.exe: PE32 executable for MS Windows (GUI) Intel 80386 32-bit
.zip archive included (just use unzip to extract)
Run Code Online (Sandbox Code Playgroud)
其他事宜:
file
显示“数据”)包含存档的此类 .exe 文件的示例- 我猜测了一些存档格式并尝试了相应的解包命令,并使用了试错法 - 最终奏效了 - 但我更喜欢更自动检查面向工作流。
没有任何问题file
。它正在做它应该做的事情:根据文件中的规则检查magic(5)
文件。如果您想提出一种通用方法来识别这些类型的文件,那么您可以提交新的魔术规则。阅读手册页magic
了解更多信息。
我怀疑file
永远不会做的一件事是“检测串联”。如果不扫描文件中的每个字节,file
就无法确定下一段何时开始 - 有些事情没有做,或者不想做。
顺便说一下,要区分 epub 文件,您需要检测它与使用相同基本结构的 ear 文件之间的区别。
我想不出一个多合一的工具,但有些程序可以处理给定类别的大量文件。
例如,p7zip 可以识别大量归档格式,因此如果您怀疑某个文件是归档文件,请尝试7z l
在其上运行。
$ 7z l ta12b563enu.exe
…
Type = Cab
Method = MSZip
…
Run Code Online (Sandbox Code Playgroud)
如果您怀疑文件是图像,请尝试ImageMagick。
$ identify keyboard.jpg.gz
keyboard.jpg.gz=>/tmp/magick-XXV8aR5R JPEG 639x426 639x426+0+0 8-bit DirectClass 37.5KB 0.000u 0:00.000
Run Code Online (Sandbox Code Playgroud)
对于音频或视频文件,请尝试mplayer -identify -frames 0
.
如果您发现file
无法识别的文件,您可以向您的魔法库的作者提出功能请求。