【发布时间】:2017-05-17 10:24:49
【问题描述】:
我有一个非常大的文件列表,一些文件是 gzip 压缩的 tar 文件,而其他文件只是压缩的 gzip 文件。不幸的是,他们都得到了扩展名 .gz。有没有一种简单的方法来检查哪些文件实际上应该具有 .tar.gz 扩展名,而无需解压和重新打包所有文件?
【问题讨论】:
-
你问这个的方式只是一个用法,而不是一个编程问题。但是,您听说过大多数 unixoid 系统附带的
file实用程序吗?它正是这样做的,针对一组已知签名测试文件。无论如何,在你的情况下,使用 gzip 或者真的,只是寻找 gzip 标头位(这都是有据可查的,如果你只是谷歌的话)也可以完成这项工作......去研究! -
感谢您的评论。我现在只有非常基础的unix。我google了半个小时,没找到结果,继续一一检查文件。我已经尝试了 file-command,但它只是说所有文件都是 gzip 压缩数据。当我使用 head-command 时,我会得到不可读的标题位(例如:RS▒▒K▒▒H▒,▒▒q▒▒▒_UWu}▒▒▒▒A▒d▒kP)▒p5)。我现在只需为每个文件键入“tar -xzvf 文件名”,如果它有效,我想它是一个 tar.gz 文件,如果我收到错误,我想它是一个真正的 .gz 文件。
-
当然,您不能像读取纯文本文件一样读取文件——它们不是!但是,只需解压缩第一个假设为 512 B(对于现代计算机来说,这真的是 nothing),然后查看说明某物是否为 .tar 文件的位,您可以解决这个问题瞬间。
-
感谢您的评论。我又搜索了 12 分钟,发现 zcat 命令解决了我的问题。一半的文件给出可读的输出,而另一半不可读。