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

发布于 2024-08-31 15:39:57 字数 473 浏览 2 评论 0原文

我需要提取 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

提前致谢。

I need to extract tar.gz a file. It's about 950mb. It has another 23 tar.gz files in it. Each of those 23 tar.gz files has one tar file in them. My questions is how I can easily extract all of them? Is there a commandline tool that I can use?

The structure is like the following:

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

Thanks in advance.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

木落 2024-09-07 15:39:57

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

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

You can use the --to-command argument to pass each extracted file to another program (on stdin). In this case, you pass it to another tar instance reading data from stdin.

tar --to-command='tar -xzvf -' -xzvf foo.tar.gz
寄人书 2024-09-07 15:39:57

我最终手动提取了 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

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

I ended up manually extracted foo.tar.gz and using the following shell script to extract those bar*.tar.gz files.

#!/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

hope this will help someone.

攒一口袋星星 2024-09-07 15:39:57

是的。

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

应该做到这一点。

Yup.

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

Should do the trick.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文