我正在寻找一个实用程序(适用于 Linux 或 Windows),它可以验证文件内容是否与扩展名匹配。这是为了捕获严重损坏的文件。
我正准备编写一个小型 bash 脚本,它将对所有内容运行“文件”,但我不想弄清楚“文件”对于我将遇到的所有格式正确的文件类型返回什么。
背景:一位朋友最近不小心删除了他们的 Windows 用户文件夹(没错……桌面、注册表、我的文档,全部……)。我使用了一个强大的恢复实用程序来恢复尽可能多的内容。这个特定的实用程序会因某种原因恢复同一文件的多个副本(例如,“Letter.doc”、“Letter(1).doc”、“Letter(2).doc”等……)。其中一些文件将包含随机垃圾,一些文件将是有效文档,其中可能包含相同的文档。
因此,我使用 fdupes 和 perl 脚本删除了所有重复文件,但现在我想将那些看起来可能是原始文件的文件与可能不是原始文件的文件区分开来。我不敢相信我是第一个需要这样做的人……
答案1
您可以尝试特立尼达和多巴哥共和国程序(还有一个命令行界面和在线的版本)。它基于内置(且可扩展)库,通过二进制签名来识别文件。 以下是列表它默认可以识别的文件扩展名,但可以手动添加新类型的定义。
请注意,如果文件的二进制签名是不是完好无损地损坏,软件将不知道文件已损坏。这取决于使用该文件的应用程序的实现来检查是否损坏(因为没有办法“知道”文件是否已损坏)。
这只是文件的工作方式,由使用所述二进制文件的程序来检查它们是否已损坏(某些文件类型在其中存储校验和)。
答案2
对于办公应用程序,打开对话框中有一个打开并修复...选项。
对于图像,IrfanView 可以重建文件头。
对于视频,VLC Player 将执行相同的操作。
但就像 EBGreen 上面所说的那样,不太可能存在能够对许多文件类型执行此操作的消费级产品,更不用说所有文件类型了。