使用 bash 脚本提取 tar 文件

Posted

技术标签:

【中文标题】使用 bash 脚本提取 tar 文件【英文标题】:Extract tar file using bash script 【发布时间】:2014-04-28 06:05:30 【问题描述】:

您好,我正在使用 Bash 脚本,我在提取 tar 文件时遇到困难,并且 tar 文件内部是另一个 tar 文件。请查看下面的代码并请向我提供反馈,因为代码所做的唯一事情就是提取第一个 tar 文件并将其删除。

#!/bin/bash

output=$(df -h)
bundle=$(awk -F = 'print $2' config.txt)
bundlename=$(echo $bundle | awk -F / 'print $11')  
echo "$output"

wget $bundle
echo "$bundlename"
tar -xzvf "$bundlename"
rm -vf "$bundlename"

我的问题是提取 tar 文件中所有 tar 文件的正确方法/代码是什么?。

【问题讨论】:

你应该从解压的 tar 文件中再次解压内容。 我应该怎么做?你能给我一些示例代码,它将在 tar 文件中提取具有不同 tar 名称的 tar 文件吗? 对此添加了答案。 它回答了这个问题吗?如果是,请将其标记为已回答。 我试过了,是的,它只能提取 .但是有没有最简单的方法来提取所有的 tar 文件? 【参考方案1】:

您可以再次将 tar 提取的输出通过管道传输到 tar command 以运行它。例如:

tar -xvf xyz.tar |grep '\.tar$' | xargs -n 1 | tar -xvf

但这只会提取一个级别的 tar 文件,如果提取的 tar 包含另一个 tar,那么您将不得不再次对其进行管道传输。我希望你明白这一点。

【讨论】:

以上是关于使用 bash 脚本提取 tar 文件的主要内容,如果未能解决你的问题,请参考以下文章

使用bash shell脚本从文件中查找和提取特定字符串后的值?

windows怎么提取bash脚本

用于提取目录中所有 .tgz 的 Bash 脚本[重复]

用于在分层目录结构中使用bash循环和AWK计算和提取结果的脚本

shell制作自解压文件tar

shell制作自解压文件tar