在 bash 中從 zip 檔案中提取大量檔案的更好方法

在 bash 中從 zip 檔案中提取大量檔案的更好方法

我有一個包含大量文件的 zip 存檔和一個包含文件列表(約 10000 個項目)的純文字文件,我需要使用 bash 從該存檔中提取這些文件。

執行該操作的最佳方法是什麼?明顯的方法是對檔案的每一行運行 unzip,但它看起來非常慢。

答案1

unzip您可以透過將純文字檔案作為輸入來運行整個文件列表,而不是在每個文件上運行:

unzip -j MyZipFile.zip <<<textfile

答案2

Unzip支援指定解壓縮哪些檔案:

unzip archive.zip file1.txt file2.txt file3.txt ...

但這不適用於 10000 個項目。您可以將檔案清單分成 100 個區塊,然後對它們運行解壓縮,這比單獨提取每個檔案的實現速度更快。

答案3

您可以使用 xargs 以及-a從檔案中讀取其參數的選項。也可能使用一個標誌將參數數量限制為適當的數量,以確保在存在此類限制時 shell 不會處理太多參數。

相關內容