web-dev-qa-db-ja.com

複数のZipファイルを単一のディレクトリ構造に解凍する方法(例:Googleドライブフォルダのエクスポート)

次の構造の非圧縮ディレクトリAから始めたと仮定します。

$ tree A
A
└── inner_dir
    ├── file1.txt
    └── file2.txt

1 directory, 2 files

ここで、Aから派生した2つのZipファイル1.Zip2.Zipが与えられたと仮定します。 1.Zipにはfile1.txtのみが含まれ、2.Zipにはfile2.txtのみが含まれます。

# -l flag simply lists file contents

$ unzip -l 1.Zip 
Archive:  1.Zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2017-09-30 21:49   A/
        0  2017-09-30 22:27   A/inner_dir/
        0  2017-09-30 21:49   A/inner_dir/file1.txt
---------                     -------
        0                     3 files

$ unzip -l 2.Zip 
Archive:  2.Zip
  Length      Date    Time    Name
---------  ---------- -----   ----
        0  2017-09-30 21:49   A/
        0  2017-09-30 22:27   A/inner_dir/
        0  2017-09-30 22:27   A/inner_dir/file2.txt
---------                     -------
        0                     3 files

1.Zip2.Zipの組み合わせから元の解凍されたディレクトリAをプログラムで再構成するには、どのコマンドを使用できますか?

Context: Googleドライブから大きなディレクトリをエクスポートする場合、コンテンツは2つ以上のZipファイルのセットに分割されます。各Zipファイルには、ファイルのサブセットが含まれています。これらのサブセットをまとめて取得すると、元のディレクトリが再構成されます。どのファイルにどのZipが含まれているかは、多かれ少なかれランダムに見えます。ちょうど2つのファイルの特別な場合だけでなく、n> 1のZipファイルに一般化するソリューションを探しています。

2
Bryce Thomas

解凍するファイルのセットを専用ディレクトリに移動してから、unzipを使用します。

$ unzip '*.Zip' -d combined

Archive:  1.Zip
   creating: combined/A/
   creating: combined/A/inner_dir/
 extracting: combined/A/inner_dir/file1.txt  

Archive:  2.Zip
 extracting: combined/A/inner_dir/file2.txt  

2 archives were successfully processed.

小切手:

$ tree combined
combined
└── A
    └── inner_dir
        ├── file1.txt
        └── file2.txt

2 directories, 2 files
2
Bryce Thomas