2014-11-06 69 views
1

我想提取目錄中的所有tar.gz文件。for循環返回一個「>」

我已經搜索在互聯網和所使用的命令:

for i in *.tar.gz; do tar -xzvf $i; done 

然而,終端具有>在下面的行返回。

有人能告訴我這裏有什麼情況嗎?我將衷心感謝您的幫助。

+0

此處不可重現。 – 2014-11-06 09:32:16

+0

你好,能否再解釋一下? – 2014-11-06 09:33:31

+0

在我的機器上,這行不會做你聲稱它做的事。 (這就是「不可重現」的意思。)它不顯示任何'>'。事實上,它只是按照預期工作,我不明白爲什麼它不會。 – 2014-11-06 09:38:11

回答

0

嗯你的解決方案應該工作在我看來。你可以嘗試一些簡單的

ls *.tar.gz | xargs -L 1 tar -xzvf 
0

試試這個

find -name '*.tar.*' | xargs -I% tar -xvf % 
+0

謝謝你生病檢查它 – 2014-11-06 09:55:42

+0

'-'格式已改變 – 2014-11-06 09:57:01

+1

@JasonC現在一切都是f9 – 2014-11-06 10:00:48

0

我想你可能需要指定你的zip文件的輸出文件夾。 這是>代表正常情況。

for i in *.tar.gz; do tar xvzf $i -C path/to/output/directory; done 

這幾個星期前我用過它的時候,

+0

這隻在當前目錄不可寫入時纔有必要。 – 2014-11-06 09:46:23

1

您的tar.gz文件的名稱中是否有空格或特殊字符?只是一個猜測,試試這個:

for i in *.tar.gz; do tar -xzvf "$i"; done 
0

沒有人建議找到-print0 | xargs的1-0有空格的文件名,這裏是:

/tmp/foo$ ls -1 
a.tar.gz 
b.tar.gz 
c and d.tar.gz 
/tmp/foo$ find . -name "*.tar.gz" -print0 | xargs -0 -I{} tar -xzvf {} 
a 
c 
d 
b 
/tmp/foo$ ls -1 
a 
a.tar.gz 
b 
b.tar.gz 
c 
c and d.tar.gz 
d 

您的解決方案將在因爲其中包含了空間,但也許這不是錯誤的文件「c和d.tar.gz」我的輸入數據失敗你經歷過。 A.M.D的一個會起作用。