2014-05-15 83 views
-1

我在下面創建了一個腳本,當我執行它時,我遇到了一個問題。而不是提取它5次,它只會提取一次。那麼如何解決這個問題呢?在一個tar文件中使用bash提取文件,但由多個tar文件組成

i=0 

    for tarfile in *.tar.gz; 
         do 
         ((i++)) 
         [ $i = 5 ] && break ; 
       tar -xzvf $tarfile 
       done 
       rm -rvf $tarfile 

非常感謝幫助。我想提取tar.gz文件,裏面只有tar.gz文件。注意:它被解壓5次,我想解壓縮最後的tar.gz文件。請幫幫我。

+0

你有5層壓縮或五個不同的tarballs? – merlin2011

+0

我有5層壓縮。例如:file.tar.gz裏面也是tar.gz等等。 – user3626800

回答

0

當且僅當每個嵌套焦油的文件名不會發生衝突,您可以執行以下操作。

for i in `seq 1 4`; do name=$(ls *.tar.gz); tar xvfz $name; rm $name; done; 

如果他們所有一樣,像foo.tar.gzfoo.tar.gzfoo.tar.gz,你可以簡單地刪除上面的rm $name

如果只有一些衝突,您將不得不扮演更聰明的竅門,例如將中間文件移動到另一個目錄中。

更新:如果您只是想將最終的tar移動到新的目錄,只需在上面的循環之後使用mv即可。

mv *.tar.gz OtherDirectoryName 
+0

我給你的腳本給了問題。它將提取所有tar.gz.我的意思是提取第一個4,最後一個將保持不變 – user3626800

+0

@ user3626800,然後將'5'改爲'4'。 – merlin2011

+0

謝謝,另一個問題..如何將最後的'tar.gz'文件移動到其他目錄?你能把它添加到你的腳本中嗎? – user3626800

相關問題