如何解压缩子目录中的所有zip文件夹?

时间:2019-06-08 11:47:12

标签: linux bash terminal zip

我的文件夹结构

drwx------ 2 miki miki 4096 сеп 12  2018 Chapter03/
drwx------ 2 miki miki 4096 сеп 12  2018 Chapter05/
drwx------ 2 miki miki 4096 сеп 12  2018 Chapter07/
drwx------ 2 miki miki 4096 сеп 12  2018 Chapter09/
drwx------ 2 miki miki 4096 сеп 12  2018 Chapter10/
drwx------ 2 miki miki 4096 сеп 12  2018 Chapter13/
drwx------ 2 miki miki 4096 сеп 12  2018 Chapter14/
-rw-r--r-- 1 miki miki   96 сеп 12  2018 README.txt

每章包含一个或多个zip文件夹。 我尝试过这种方式

unzip -d $(find ./ -type f -name '*.zip')

这不起作用。

Archive:  ./Chapter14/kops-master.zip
4ffc8d76f1313a2f2a04a87d543a0701816c3df7
checkdir:  cannot create extraction directory: ./Chapter14/weave-kube-master.zip
           File exists

正确的命令应如何显示?

2 个答案:

答案 0 :(得分:1)

尝试:

find . -type f -name '*.zip' -exec unzip {} \;

这会在您的unzip命令找到的每个zip文件上运行find

即使zip文件或目录的名称中包含空格或其他困难的字符,上述内容也可以使用。

答案 1 :(得分:0)

由于zip文件可能包含/嵌套zip文件,因此我们不知道在find命令中读取文件的顺序。最好运行find命令两次或3次。对应于zip嵌套级别。

find . -type f -name '*.zip' -exec unzip {} \;
find . -type f -name '*.zip' -exec unzip {} \;
find . -type f -name '*.zip' -exec unzip {} \;