zip:参数列表太长,如何制作没有子文件夹的 zip?

zip:参数列表太长,如何制作没有子文件夹的 zip?

我找不到一种方法来压缩文件夹内的所有文件而不压缩文件夹本身

-tempfolder
--images
---1.jpg
---2.jpg
---3.jpg

我需要压缩图像文件夹中的所有文件,而无需在按照此答案(和其他答案)提取它们后创建文件夹,我确实尝试过这种方式,但没有成功 zip:参数列表太长(总共 80,000 个文件)

find images/ -mindepth 1 -maxdepth 1 | zip images/images.zip -@

当我从 zip 中提取文件时,它会生成包含所有文件的图像文件夹

答案1

尝试以下方法:

find images/ -mindepth 1 -maxdepth 1 | xargs -l 1000 zip images/images.zip

xargs 程序将从“|”管道获取标准输出并将其添加为命令行参数。该-l选项将一次扩展的文件数限制为 1000 个。

编辑

对于海报来说,参数列表似乎太长了,因为文件夹路径被附加到每个文件,因此列表大小大大增加。

在他的案例中,解决方案是添加-j或 参数--junk-paths,仅存储文件的名称(丢弃路径),不添加目录名称。因此以下内容就足够了:

find images/ -mindepth 1 -maxdepth 1 | zip images/images.zip -@ -j

相关内容