1. ホーム
  2. unix

[解決済み] Unixのコマンドラインから、あるディレクトリとそのサブディレクトリにあるアーカイブを再帰的に解凍するにはどうすればよいですか?

2023-05-06 06:36:51

質問

質問 unzip コマンドにはアーカイブを再帰的に解凍するためのオプションはありません。

もし私が以下のようなディレクトリ構造とアーカイブを持っているとしたら。

/Mother/Loving.zip
/Scurvy/シー・ドッグス.zip
/Scurvy/Cures/Limes.zip(ライム)。

そして、すべてのアーカイブを各アーカイブと同じ名前のディレクトリに解凍したいのです。

/Mother/Loving/1.txt(マザー/ラビング/1.txt
/Mother/Loving.zip(マザー・ラビング・ジップ
/Scurvy/Sea Dogs/2.txt
/スクルービー/シー・ドッグス.zip
/壊血病/治療薬/ライム/3.txt
/Scurvy/Cures/Limes.zip

どのようなコマンドを発行すればよいのでしょうか?

空白を含むファイル名で詰まらないようにすることが重要です。

どのように解決するのですか?

ファイルをそれぞれのフォルダに展開したい場合は、次の方法を試してみてください。

find . -name "*.zip" | while read filename; do unzip -o -d "`dirname "$filename"`" "$filename"; done;

高いI/Oを処理できるシステム向けのマルチプロセッシング版。

find . -name "*.zip" | xargs -P 5 -I fileName sh -c 'unzip -o -d "$(dirname "fileName")/$(basename -s .zip "fileName")" "fileName"'