2011-03-03 56 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;完成