我有一个包含 200 多个.zip
文件的文件夹。在每个文件中,只有一个文件夹,其中包含多种类型的存档(有时,该文件夹会丢失)。其中,我只想提取.jpg
or.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 文件中的哪个位置,请将选项添加-j
到unzip
:
find . -type f -iname \*zip -print0 | xargs -0 --max-args=1 --replace unzip -j {} \*.jpg \*.jpeg
您还可以通过-d foldername
在-j
.