对于所有 zip,并在工作目录中解压缩并保持其结构

对于所有 zip,并在工作目录中解压缩并保持其结构

用这个命令

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

我们找到 .zip 下的所有 zip 文件。 (目录),然后将它们解压到当前工作目录中, 然而, 结构消失了。

/backUp/pic1/1-1.zip
/backUp/pic1/1-2.zip
/backUp/pic2/2-1.zip
/backUp/pic2/2-2.zip
/backUp/pic3/3-1.zip
/backUp/pic3/3-2.zip
/backUp/pic3/3-3.zip

Current command result:
/new/1-1
/new/1-2
/new/2-1
/new/2-2
/new/3-1
/new/3-2
/new/3-3





desired  result  
/new/pic1/1-1 
/new/pic1/1-2 
/new/pic2/2-1
/new/pic2/2-2
/new/pic3/3-1
/new/pic3/3-2
/new/pic3/3-3

在这里问过,但代码不起作用 此命令中的 dirname 和 basename 应该是什么?

答案1

您可以使用findwith-execdir参数来代替-exec.

-execdir将在找到文件的目录中运行命令,而不是当前的工作目录

例子:

find . -name '*.zip' -execdir unzip {} \;

虽然这并不完全是您所要求的,但您可以添加几个步骤来获得所需的结果:

mkdir new
cp -a backUP/* new/
#run unzip operation
cd new
find . -name '*.zip' -execdir unzip {} \;
#remove all .zip files
find . -name '*.zip' -exec rm {} \;

相关内容