是否有可能在不将整个tarball解压到磁盘上的情况下通过编程从相当大的.tar.gz文件中提取单个文件?基本上,我需要通过网络获取大型tar.gz文件并提取1个小文本文件。看起来从磁盘中提取并解压缩tarball,然后提取文件,最后删除其他所有文件似乎有些过度。此外,我将以递归方式执行此操作(例如软件包依赖项,每个文本文件指向更多的tar.gz),因此我能够避免的网络流量和CPU周期越少越好。
是否有可能在不将整个tarball解压到磁盘上的情况下通过编程从相当大的.tar.gz文件中提取单个文件?基本上,我需要通过网络获取大型tar.gz文件并提取1个小文本文件。看起来从磁盘中提取并解压缩tarball,然后提取文件,最后删除其他所有文件似乎有些过度。此外,我将以递归方式执行此操作(例如软件包依赖项,每个文本文件指向更多的tar.gz),因此我能够避免的网络流量和CPU周期越少越好。
从手册中提取foo.tar.gz中的blah.txt:
tar -xzf foo.tar.gz blah.txt
(当然,这也可以在Superuser上发问,但是快速得到答案也是很好的。)
xyz/pqr/abc.txt
,那么您需要在命令行中指定这个文件名。您也可以使用shell风格的元字符: xyz/pqr/*
可以提取xyz/pqr
子目录下的所有文件。只需注意shell是否会为您展开‘*’-使用引号来阻止它这样做即可。 - Jonathan Lefflertar -xzf tar.gz release1/shared/blah.txt
如果您不记得tar文件的目录结构(我有点杂乱无章,有时会忘记在哪里打tar包),您可以随时
tar -tzf tar.gz
在了解您的目录结构后,要查看内容,请取消(Ctrl+C)。
./
才能扫描进入它们。例如:tar -xzf tar.gz ./release1/shared/blah.txt
- TJ L