2011-03-03 58 views
12

我有一個文件夾中的大約200,000個大拇指,都是以.tar.gz結尾的gzip結尾 我想要做的是提取該文件夾中的所有文件,不同文件夾。有誰知道一個命令來做到這一點?我在網上發現了這個,但我不知道如何使用它來提取到不同的文件夾。Ubuntu的提取多個.tar.gz文件到新的目錄

for i in *.tar.gz; do tar -xvzf $i; done 
+0

這與編程有關嗎? – 2011-03-03 07:18:48

+0

不知道,但我在這裏發現類似的問題,所以我想我會問,因爲這裏有很多的知識。 – chris 2011-03-03 07:21:53

+0

任何與您類似的問題都將被刪除或關閉/遷移。 – 2011-03-03 07:22:30

回答

27

添加-C選項來選擇目標目錄:

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

似乎工作,謝謝。 – chris 2011-03-03 07:25:36

2
actdir=`pwd` 
for files in *tar.gz ; do 
    filedir=`basename $files .tar.gz` 
    mkdir $filedir 
    cd $filedir 
    tar -xzf ../$files 
    cd $actdir 
done 

HTH

+0

令我印象深刻的是,tar沒有自動創建文件夾的選項。感謝您的腳本,非常有幫助。 – 2015-10-14 18:23:50

4

現在你正在使用

tar 

提取所有文件。我相信你可以設置輸出到哪個目錄。

這將是這樣的:

for i in *.tar.gz; do tar -xvzf $i -C directory; done 

其中directory是您想將文件解壓到文件夾的路徑。

請參閱http://www.computerhope.com/unix/utar.htm(關於tar的文檔)。

2

-C選項可能會更好。你也可以這樣做:

$的mkdir /路徑/到/ newfolder
$因我與* .tar.gz; do files =「$ files $(readlink -f $ i)」; done#建立絕對文件名列表
$ cd/path/to/newfolder
$ for i in $ files;做tar -zxvf $ i;完成