我正在使用tf函数列出一个tar.gz文件的内容。它非常大,约1 GB。大约有1000个文件按年/月/日的结构组织。
列出操作需要相当长的时间。看起来像是应该很快的。有人能给我解释一下内部机制吗?
谢谢 -
列出操作需要相当长的时间。看起来像是应该很快的。有人能给我解释一下内部机制吗?
谢谢 -
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