Unix / Linuxでさまざまなzipレベルファイルを含む圧縮ファイルを解凍する方法は? [コピー]

Unix / Linuxでさまざまなzipレベルファイルを含む圧縮ファイルを解凍する方法は? [コピー]

たとえば、私のフォルダ名は テスト.zip

テスト.zip次のようなさまざまなzipフォルダが含まれています。te1.zip、te2.zip、te3.zip でもte1.zipさまざまなzipフォルダが含まれています。

だからすぐにLinuxで解凍する必要があります。

これを行う方法を教えてください。

ベストアンサー1

このような短いスクリプトで作業を実行する必要があります(すべてを再帰的に処理するには、スクリプトが元のファイルを削除する必要があるため、元のファイルをバックアップする必要があります)。

while [ "$(find . -type f -name '*.zip' | wc -l)" -gt 0 ]; 
  do 
    find -type f -name '*.zip' -exec mkdir '{}'_dir \; \ 
                               -exec unzip -d '{}'_dir -- '{}' \; \
                               -exec rm -- '{}' \;
  done

-delete一部のシステムでは-exec rm -- '{}' \;

  • このコマンドは現在のディレクトリを繰り返します(このディレクトリはTest.zip(または保持しているすべてのzipファイル)のみが使用できる空のディレクトリであると予想されます)。
  • 見つかったアーカイブごとに、アーカイブ名+ _dirを使用して新しいディレクトリを作成します(一部のアーカイブに名前が一致するファイルが含まれている場合の競合を防ぎます)。
  • 新しく作成されたディレクトリにアーカイブを解凍し、処理されたzipファイルを削除します。
  • すべてのファイルが処理されたら、もう一度繰り返して、ディレクトリツリーでzipファイルを引き続き使用できることを確認します。
  • 内部のどこかにzip爆弾があると、スクリプトは無限ループに陥ります。

おすすめ記事