有时我会从客户端获取文件扩展名错误的文件。例如,名称为image.jpg,但文件实际上是TIFF图像。在许多情况下,我可以通过在文本编辑器中打开文件,查看前几个字节,然后推断出文件的类型来弄清该文件。

这对JPEG,TIFF,GIF和PDF文件。但是,那里还有更多文件类型。

是否可以通过分析包含的数据来自动识别正确的文件类型?

评论

对于那些感兴趣的人,file命令可以在* nix机器上执行。

我不明白为什么这个问题不合时宜(3年后)。我不要求使用特定的软件(我改写了我的问题以强调这一点)。我只是想寻求解决方案。

我不明白为什么有26个人认为上述与boehj * nix相关的评论“为帖子添加了一些有用的东西”。这个问题被标记为Windows,但是注释暗示:“您不能在Windows上执行此操作,而必须使用* nix”。所以?该评论针对“针对那些感兴趣的人”。在什么地方?换电脑? :(

@Aacini对来自Google的* nix用户有用。

@Aacini此外,Windows 10现在支持bash,因此文件现在是此问题的有效答案(尽管我尚未测试过)。

#1 楼

您可以使用TrID工具,该工具具有不断增长的文件类型定义库来识别文件。文件夹中要检查的图像,例如C:\ verifyimages-然后可以使用以下命令:

trid C:\verifyimages\*


这将检查verifyimages文件夹中的所有文件。


还有一个可用的GUI版本TrIDNet:



有可用的文档,您可以轻松地将TrID或TrIDNet集成到Windows资源管理器和Total Commander中:

Windows资源管理器


集成TrID
集成TrIDNet

Total Commander


/>集成TrID
集成TrIDNet


评论


请注意,这表示它未经许可用于商业用途,只能用于个人用途

–克里斯·马格努森(Chris Magnuson)
15年1月31日在17:31

我在确定使用该程序所需的下载文件时遇到了一些麻烦。因此,此评论对此有帮助。您需要下载两个文件。首先,命令行实用程序或GUI实用程序。其次,一个名为“ TrID XML defs”的XML定义文件夹。将定义XML文件与TrID放在同一目录中。然后扫描定义。最后,您可以开始使用它了。

–mrtsherman
2015年3月26日15:40



mrtsherman,谢谢您的澄清。我也很困惑。文档可能会得到改进,但是不错的工具!

– J土拨鼠
18-10-6在17:26

#2 楼

file


File测试每个参数以尝试对其进行分类。有三组测试,按此顺序执行:文件系统测试,幻数测试和语言测试。第一个成功的测试导致文件类型被打印。

打印的类型通常包含一个单词text(文件仅包含打印字符和一些常见的控制字符,可能很安全在ASCII终端上读取),可执行文件(文件包含以某种UNIX内核或其他UNIX内核可以理解的形式编译程序的结果)或其他含义的数据(数据通常是“二进制”或不可打印的)。众所周知的包含二进制数据的文件格式(核心文件,tar归档文件)是例外。


评论


该文件是标准的,但是在较旧的系统(尤其是非Linux)上不是很了解。对于Ubuntu等,它应该非常受人尊敬,甚至是标准安装。

–特尔比约恩(ThorbjørnRavn Andersen)
2011年4月24日在13:28

我非常怀疑文件是否是Windows应用程序制作的文件的专家。

–罗宾·格林(Robin Green)
2011年4月24日在20:23

@Robin:欢迎您进行测试。

–伊格纳西奥·巴斯克斯(Ignacio Vazquez-Abrams)
2011年4月24日在20:27

@Robin:我非常怀疑您是否使用过文件,但是您几乎已经下定决心了。

–tzot
11年4月24日在23:24

@ Gqqnbig,file.exe的版本已有十年历史了,根据Wikipedia的说法,gnuwin32的总体状态自2013年以来一直保持不变。现代的方法是使用git-for-win:git-scm.com/download/win,它捆绑了Unix实用程序(最新版本)。安装后,您应该在PATH中包含%ProgramFile%\ Git \ usr \ bin,其中包含file.exe。对于Windows 10,您还可以启用Windows Sybsystem for Linux(WSL),安装您选择的发行版(ubuntu,fedora,alpine,gentoo等),输入并执行/ mnt / c / your / path / in / Windows / filename.extension(/ c /部分代表C:驱动器)。

–火神乌鸦
19年5月25日在10:57



#3 楼

我曾经在法国国家图书馆工作,建立了一个数字档案系统,其中不仅包含数字化书籍,还包含数百万种带有各种奇怪文件类型的数字文物。我们使用JHOVE识别文件格式。
JHOVE是开源的,由JSTOR和哈佛大学图书馆维护。使用起来非常简单。

评论


凉!但是它可以识别TrID这样的专有格式吗?无论如何,我确实有一些用途来标识非专有格式的子格式/变体(或者,确切地说,是对标准化格式的专有“扩展”),因此这会派上用场。谢谢你的提醒!

– pepoluan
2011年4月24日14:00

#4 楼

可能吸引人的现代方法是将Git用于Windows。运行git-bash.exe并运行命令file path\to\file。示例输出可能是:
TestFile.ico: MS Windows icon resource - 1 icon, 128x128, 32 bits/pixel

或者,使用命令file -i path\to\file,它可能会给出:
TestFile.ico: image/vnd.microsoft.icon; charset=binary


#5 楼

您可以从任何计算机(包括Windows)检查文件类型,网址为

http://www.checkfiletype.com

评论


欢迎来到超级用户!请阅读如何在答案中推荐软件,尤其是粗体字;然后编辑您的答案以遵循那里的指导原则。即使您推荐一个网站,这也适用!干杯

–bertieb
18年6月4日在11:33

#6 楼

我在程序中使用Oracle的OutsideIn库。它不是免费的,但它们工作得很好,尤其是对于图像。市场人士说它支持500多种文件类型。