2010-07-30 120 views
2

为前abc.tar.gz有如何在不解压缩内容的情况下在.tar.gz压缩文件中查看特定文件的内容?

ABC/FILE1.TXT
ABC/FILE2.TXT
ABC/ABC1/file3.txt
ABC/ABC2/file4.txt

我需要在不提取文件的情况下读取/显示file3.txt的内容。

感谢任何输入。

+2

我认为这是一回事......你的意思是说你不想把它解压缩到磁盘上的文件上? – 2010-07-30 08:20:09

+0

没有压缩文件是一个大文件,里面有太多的文件夹和文件,我没有足够的空间/使用整个未压缩的文件,我也不需要tar.gz中特定文件的全部内容。我发现ans虽然tar -xzf file.tar.gz -O文件/特殊文件.txt和管道到csplit模式。谢谢! – szhak 2010-07-30 19:17:39

回答

9
import tarfile 
spam = tarfile.open("abc.tar.gz") 
if "abc/abc1/file3.txt" in spam.getnames(): 
    with spam.extractfile("abc/abc1/file3.txt") as ham: 
     print ham.read() 

查看tarfile

+0

感谢ans,但我的投票去bash,因为我很容易找到特定文件上的模式。 – szhak 2010-07-30 19:21:33

+0

够公平 - 尽管你可以在python中做同样的事情; 'getnames'返回档案中的文件数组,您可以搜索/分析。这个问题是否有任何特殊的原因标记为“python”,btw? = p – katrielalex 2010-07-30 20:35:01

3
tar -xzf mytar.tar.gz --to-command=cat filename.in.archive 
+0

你的帮助。我正在寻找特定文件中的某种模式。管到csplit帮我 tar -xzf file.tar.gz -O file/file.txt | csplit -s - “/ regex /”{no_of_times}>/dev/null 谢谢 – szhak 2010-07-30 19:25:57

相关问题