如何將多個 zip 檔案解壓縮到單一目錄結構中(例如 Google Drive 資料夾匯出)

如何將多個 zip 檔案解壓縮到單一目錄結構中(例如 Google Drive 資料夾匯出)

假設您從一個未壓縮的目錄開始A,其結構如下:

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

1 directory, 2 files

現在假設您已獲得兩個 zip 檔案1.zip2.zip源自A. 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

我可以使用什麼命令通過和A的組合以編程方式重建原始解壓縮目錄?1.zip2.zip

情境:從 Google 雲端硬碟匯出大型目錄時,內容會分成一組 2 個或更多 zip 檔案。每個 zip 檔案都包含檔案的一些子集,這些檔案放在一起時會重新構成原始目錄。哪個 zip 中包含哪些檔案似乎或多或少是隨機的。我正在尋找一種適用於 n > 1 個 zip 檔案的解決方案,而不僅僅是 2 個檔案的特殊情況。

答案1

將要解壓縮的檔案集移到專用目錄,然後使用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

@lcharbon你的問題是zip處理非標準編碼的方式。

您可以使用 p7zip 來解決這個問題,它可以更好地處理這個問題。

這是使用 p7zip 的模擬指令:

7z x '*.zip' -ocombined

您可以使用brew 在 Mac 上安裝 p7zip brew install p7zip,或在 Linux 上使用發行版的套件管理器。

相關內容