用这个命令
find . -name '*.zip' -exec unzip '{}' ';'
我们在 . (目录),然后将它们解压缩到当前工作目录中, 但是, 结构消失了。
/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 应该在这个命令中是什么?
您可以使用
find
with-execdir
参数而不是-exec
.-execdir
将在找到文件的目录中运行命令,而不是在您当前的工作目录中例子:
find . -name '*.zip' -execdir unzip {} \;
虽然这并不完全符合您的要求,但您可以添加一些步骤来获得所需的结果: