Directory

對於所有 zip,並在工作目錄中解壓縮並保持其結構

  • February 23, 2022

用這個命令

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 應該在這個命令中是什麼?

您可以使用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 {} \;

引用自:https://unix.stackexchange.com/questions/691841