すべての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 {} \;

関連情報