如何检查哪些恢复的文件是有效的?

如何检查哪些恢复的文件是有效的?

我恢复了许多文件,其中许多文件无效,尽管它们的名称和扩展名看起来没有问题。这是意料之中的事。

现在我需要过滤掉那些可能没问题的。我看到以下选项:

例如,PowerPoint 文件 (*.pptx) 实际上是前两个字节以 PK 开头的 zip 容器。因此命令

head --byte 2 filename

对于大多数好的文件,都会输出 PK,而坏的文件则不以 PK 开头。

问题1:如何结合head列出find匹配的文件?

另一种方法是file命令。它打印

Zip archive data, at least v2.0 to extract

对于好的 PowerPoint 文件,但简单地

data

查找坏文件。

问题2:如何结合file列出find有效文件?

还有其他文件类型,但如果我得到线索,我就可以增强技术:)

问题 3:有没有更明显的方法可以做到这一点?

答案1

使用 find 你可以做类似的事情

find . -type f -exec file "{}" + | awk  '/Zip archive data/ {print $1}' | sed 's/:$//'

它将打印文件标识为Zip archive数据的文件的文件名(删除尾部的:)。

答案2

我建议使用 grep,因为它用于在文件中搜索文本。

我不确定你需要哪些细节,但这应该可以帮助你入门:http://www.computerhope.com/unix/ugrep.htm

答案3

我发现-printf使用 参数find可以让很多事情变得比使用 简单得多-exec。因此,此命令将识别(可能)好的文件并将它们移动到名为 good 的子目录中:

find . -type f -printf "file '%p' | grep 'Zip archive data' && mv '%p' good \n" | sh

对于 Word 和 Excel 文档,您可以使用字符串“Author:”,因为有效的 doc 文件似乎具有此属性。

相关内容