Zip

從多個 .zip 文件中提取 jpg/jpeg 文件

  • November 18, 2020

我有一個包含 200 多個文件的文件夾.zip。在這些文件中的每一個中,只有一個文件夾,其中包含多種類型的檔案(有時,此文件夾失去)。其中,我只想解壓.jpgor.jpeg文件。該zip文件的結構是:

AAAA-99999-2015.zip
    AAAA-99999-2015 (optional)
         AAAA-99999-2015.jpg (or .jpeg)
         AAAA-99999-2015.prj
         AAAA-99999-2015.ecw
         readme.txt

¿ 如何在不手動打開所有這 200 個檔案的情況下自動執行此任務?

你可以做這樣的事情

find . -type f -iname \*zip -print0 | xargs -0 --max-args=1 --replace unzip {} \*.jpg \*.jpeg

這將在目前文件夾和子文件夾中查找名為“*.zip”的文件,然後對於其中的每一個,單獨 ( --max-args=1)unzip呼叫命令,附加\*.jpg \*.jpeg,從而選擇要提取的文件。

(如果我們同時選擇*.jpeg*.jpg文件並且其中一些不存在unzip可能會警告我們。這可以安全地忽略。)

如果您想測試首先發生的情況,請插入echo

find . -type f -iname \*zip -print0 | xargs -0 --max-args=1 --replace echo unzip {} \*.jpg \*.jpeg

如果您要提取目前文件夾中的所有文件,無論它們在 ZIP 文件中的位置如何,請添加以下-j選項unzip

find . -type f -iname \*zip -print0 | xargs -0 --max-args=1 --replace unzip -j {} \*.jpg \*.jpeg

您還可以-d foldername-j.

引用自:https://unix.stackexchange.com/questions/620181