我正在使用tf函数列出tar.gz文件的内容。它非常大~1 GB。以年/月/日文件结构组织的文件大约有1000个。
列表操作需要退出一段时间。看起来像列表应该很快。任何人都可以在内部启发我吗?
谢谢 -
答案 0 :(得分:2)
例如,查看wikipedia以验证tar中的每个文件都在标头之前。要验证tar内的所有文件,必须读取整个tar。
在tar的开头没有“索引”来表示它的内容。
答案 1 :(得分:2)
Tar具有简单的文件结构。如果要列出它们,则必须解析所有文件。 如果要查找一个文件,可以停止进程。但必须确保存档只有一个文件版本。这在打包存档上是典型的,因为不支持添加。 例如,你可以这样做:
tar tvzf somefile.gz|grep for find something|\
while read file; do foundfile="$file"; last; done
在这个循环中会断开并且不会读取所有内容,而只是从开始到文件位置。
如果您必须对列表执行更多操作,请将其保存到任何临时文件中。如果需要,你可以gzip这个文件以保存地方:
tar tvzf somefile.gz|gzip >temporary_filelist.gz