假設您從一個未壓縮的目錄開始A
,其結構如下:
$ tree A
A
└── inner_dir
├── file1.txt
└── file2.txt
1 directory, 2 files
現在假設您已獲得兩個 zip 檔案1.zip
並2.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.zip
2.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 上使用發行版的套件管理器。