我遇到一种情况,我想从嵌套的 tar.gz 中提取文件。 .tar.gz的结构如下
- 测试.tar.gz
- 数据1
- 数据2
- 数据3
- 测试2.tar.gz
- 数据4
- 数据5
- 测试日志
- 数据5
- 数据4
- 测试2.tar.gz
- 数据3
- 数据2
- 数据1
我只想提取测试日志文件来自测试.tar.gz文件。我见过这发布后,我们可以提取 tar.gz 文件,但不能在嵌套级别中提取。
我正在添加 tar tfz data1.tar.gz 的输出 文件夹结构可能与手动输入上述结构有所不同。
data1/.
data1/META.json
data1/TEMP
data1/TEMP/temp-2
data1/TEMP/temp-2/1-chksum.txt
data1/TEMP/temp-2/1
data1/TEMP/temp-2/1/otherfiles
data1/TEMP/temp-2/1/otherfiles/2016_06_24.tar.gz
所以测试日志文件存在于内部的嵌套文件夹中2016_06_24.tar.gz
答案1
假设 data4 等是压缩的 test2.tar.gz 存档的成员,并使用GNU tar 的--strip-components 选项:
tar xzOf ./test.tar.gz data1/data2/data3/test2.tar.gz | \
tar xzf - --strip-components=2 data4/data5/test.log
...它告诉第一个tar
将嵌套的压缩 tar 文件提取到标准输出,然后告诉第二个tar
获取输入的文件并仅提取 data4/data5/test.log 文件,从而剥离前两个组件。这会将 test.log 文件放入当前目录中。如果您没有 GNU tar,只需删除 --strip-components 选项,文件就会使用其存档的路径进行提取。