【问题标题】:How to extract nested tar.gz files easily?如何轻松提取嵌套的 tar.gz 文件?
【发布时间】:2010-05-06 03:01:46
【问题描述】:

我需要解压 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

提前致谢。

【问题讨论】:

    标签: bash command-line extract


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      是的。

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

      应该做的伎俩。

      【讨论】:

      • 当然,将其封装在一个小脚本中(或复制+粘贴该行 23 次 ^_^),您应该会很成功。
      • 如果你能解释为什么它不起作用,我就有更好的机会告诉你出了什么问题……但既然你已经解决了,我想这还不算很重要。
      • @StarCub:我猜你在某处需要另一个z,也许少一个O。也许tar -xzOf foo.tar.gz bar1.tar.gz | tar -xz foobar1.tar
      【解决方案3】:

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

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

      【讨论】:

      • 虽然您的解决方案有效,但如果您想了解为什么不应该以现有方式使用 ls 的输出,stackoverflow.com/questions/1956144/… ...我找到了答案(那个问题)使用特别有趣的find 命令。
      猜你喜欢
      • 1970-01-01
      • 2016-10-11
      • 1970-01-01
      • 1970-01-01
      • 2019-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多