unix 我在linux下工作,必须解压缩已经存在于一个存档中的存档,有人能解释一下如何在使用循环时解压缩吗?

k4ymrczo  于 2022-11-04  发布在  Unix
关注(0)|答案(1)|浏览(123)

# !/bin/bash

tar -xvf assignment_UA_InleidingProgrammeren_Huistaak1-HelloWorld_2019-11-11.tgz
a=$(echo assignment_UA_InleidingProgrammeren_Huistaak1-HelloWorld_2019-11-11.tgz | cut -b 15-35)
b=$(echo assignment_UA_InleidingProgrammeren_Huistaak1-HelloWorld_2019-11-11.tgz | cut -b 37-56)

# cutcommand van geeksforgeeks.org

mkdir -p "$a"/"$b"
mv assignment_UA_InleidingProgrammeren_Huistaak1-HelloWorld_2019-11-11/*.tgz InleidingProgrammeren/Huistaak1-HelloWorld
rmdir assignment_UA_InleidingProgrammeren_Huistaak1-HelloWorld_2019-11-11

for x in InleidingProgrammeren/Huistaak1-HelloWorld

我已经解压缩了第一个归档文件,但我必须解压缩此归档文件中的tgz归档文件,而不使用硬代码。
我已经尝试使用不同的循环,但它不工作,我不知道我是否正确地使用它们。

oymdgrw7

oymdgrw71#

假设条件:

  • 您有一个包含一些文件的归档文件a.tgz。
  • 您有一个包含一些文件的归档文件B。
  • a.tgz和b.tgz本身都包含在另一个归档文件top.tgz中。
  • 当脚本启动时,a.tgz和b.tgz都不存在于top.tgz之外。

t.tgz
- a.tgz
- 一些文件
- b.tgz
- 一些文件
脚本:


# !/bin/bash

tar -xzf top.tgz
rm -f top.tgz
for F in *.tgz
do
    tar -xzf "$F"
    rm -f "$F"
done
  • 首先解压缩顶层归档文件。
  • 删除顶层归档文件(或将其移动到其他位置),以便for F in *.tgz不会再次处理它。
  • 然后在新归档文件上循环并提取它们。
  • 最终结果,来自a.tgz和B.tgz的所有文件都可用。

相关问题