如何轻松提取嵌套的tar.gz文件?

时间:2010-05-06 03:01:46

标签: bash command-line extract

我需要提取tar.gz文件。它大概是950mb。它还有另外23个tar.gz文件。这23个tar.gz文件中的每一个都有一个tar文件。我的问题是如何轻松提取所有这些内容?是否有我可以使用的命令行工具?

结构如下:

foo.tar.gz
 ├───bar1.tar.gz
 │   ├───foobar1.tar
 ├───bar2.tar.gz
 │   ├───foobar2.tar
 ├───bar3.tar.gz
 │   ├───foobar3.tar
 ├───bar4.tar.gz
 │   ├───foobar4.tar
 ├───bar5.tar.gz
 │   ├───foobar5.tar
 ├───bar6.tar.gz
 │   ├───foobar6.tar
 |   ..........
 |   ..........
 |   ..........
 |   23 of them

提前致谢。

3 个答案:

答案 0 :(得分:5)

您可以使用--to-command参数将每个提取的文件传递给另一个程序(在stdin上)。在这种情况下,您将它传递给另一个从stdin读取数据的tar实例。

tar --to-command='tar -xzvf -' -xzvf foo.tar.gz

答案 1 :(得分:4)

我最终手动提取了foo.tar.gz并使用以下shell脚本来提取那些bar * .tar.gz文件。

#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
export PATH
for next in *.tar.gz
    do
        echo "Untaring - $next"
        tar -xzf $next -C ~/foo
    done
exit 0

希望这会对某人有所帮助。

答案 2 :(得分:0)

烨。

tar -xzOf foo.tar.gz bar1.tar.gz | tar -xO foobar1.tar

应该做的伎俩。