如何搜索文件并将它们压缩到一个 zip 文件中

Posted

技术标签:

【中文标题】如何搜索文件并将它们压缩到一个 zip 文件中【英文标题】:how can i search for files and zip them in one zip file 【发布时间】:2012-10-25 10:49:03 【问题描述】:

我尝试使用以下命令搜索文件并压缩它们

find . regexpression -exec zip  \;

但是它不起作用。我该怎么做?

【问题讨论】:

【参考方案1】:

您使用的命令将分别对每个文件运行 zip,试试这个:

find . -name <name> -print | zip newZipFile.zip -@

-@ 告诉 zip 从输入中读取文件。来自男人zip(1),

-@ 文件列表。 如果文件列表指定为 -@ [不适用于 MacOS],则 zip 从标准输入而不是命令行获取输入文件列表。

【讨论】:

我可以删除这个命令中被压缩的文件吗???或者我将不得不给出另一个命令,比如 find 。 -name -exec rm -rf \;删除压缩文件 @LOGAN 最简单的方法是这样做,运行另一个命令,但也许有更好的方法,你应该为此提出一个新问题。 刚刚在 Mac 上试用过,效果很好。我想你可以删除免责声明 该免责声明来自联机帮助页,即使在 macOS 上也是如此,但 -@ 选项确实有效。 基于此,我就是这样压缩更改find . -cmin -400 -print | zip newZipFile.zip -q@【参考方案2】:

您还可以提供名称作为 find 命令的结果:

zip name.zip `find . -name <name> -print`

这是您正在使用的 shell 的一项功能。您可以搜索“反引号”以确定您的 shell 如何处理此问题。

【讨论】:

【参考方案3】:

您的回复很接近,但这可能会更好:

find -regex 'regex' -exec zip filname.zip  +

这会将所有匹配的文件放在一个名为 filename.zip 的 zip 文件中。您不必担心文件名中的特殊字符(如换行符),如果您通过管道传输结果,您就会担心。

【讨论】:

做什么?带 + 号 @aliopi + 表示将 替换为所有文件名,而不是对每个文件执行一次命令。 如果您在外部目录中执行搜索,结果可能类似于home/path/file。在这种情况下,有必要在这里使用zip -j 更多信息create-zip-ignore-directory-structure

以上是关于如何搜索文件并将它们压缩到一个 zip 文件中的主要内容,如果未能解决你的问题,请参考以下文章

如何在Mac中压缩文件

如何在android中压缩和解压缩png图像

如何使用Windows的内置功能从脚本中压缩或解压缩?

如何在 C# 中压缩(和解压缩)字节 []?

如何仅使用 Windows 的内置功能从脚本中压缩或解压缩?

如何在 Objective C 中压缩、解压缩文件(arm64 支持)