从多个 .zip 文件中提取 jpg/jpeg 文件

从多个 .zip 文件中提取 jpg/jpeg 文件

我有一个包含 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 个档案?

答案1

你可以做这样的事情

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 文件中的哪个位置,请将选项添加-junzip

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

您还可以通过-d foldername-j.

相关内容