是否可以以编程方式从大小合适的.tar.gz中提取单个文件,而无需将整个tarball提取到磁盘?基本上我需要通过网络进入大型tar.gz文件并提取1个小文本文件。将tarball提取并提取到磁盘然后将文件拉出来然后删除其他所有内容似乎有点过分了。此外,我将以递归方式执行此操作(例如,包依赖项,每个文本文件指向更多tar.gz),因此我可以使用的网络流量和CPU周期越少越好。
答案 0 :(得分:21)
从手册页中,从foo.tar.gz中提取blah.txt:
tar -xzf foo.tar.gz blah.txt
(当然,这取决于超级用户,但是嘿,快速回答也很好。)
答案 1 :(得分:4)
我回应Jefromi的回答,如果在tar文件中有目录,则添加包含文件的路径(这对某些人来说似乎很明显,但我最初并不清楚如何指定目录结构) 。
例如,如果你在src /目录下执行tar,而blah.txt在release1 / shared /下,你会回到src /目录(如果你想在同一个地方解压缩)
tar -xzf tar.gz release1/shared/blah.txt
如果你不记得你的tar文件的目录结构(我有点混乱,有时会忘记我在哪里做tar),你总是可以
tar -tzf tar.gz
查看内容,一旦了解了目录结构,就取消(Ctrl + C)。