44

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

find . regexpression -exec zip {} \;

但是它不起作用。我怎样才能做到这一点?

4

3 回答 3

94

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

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

-@告诉 zip 从输入中读取文件。从 man zip(1)

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

于 2012-11-05T15:14:24.617 回答
16

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

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

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

于 2012-11-05T15:24:07.147 回答
15

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

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

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

于 2012-11-05T15:25:14.717 回答