2010-07-30 36 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

相關問題