Linux 如何搜索文件并将其压缩到一个压缩文件中

Linux 如何搜索文件并将其压缩到一个压缩文件中,linux,operating-system,Linux,Operating System,我尝试搜索文件并用以下命令压缩它们 find . regexpression -exec zip {} \; 但是它不起作用。如何执行此操作?您使用的命令将在每个文件上分别运行zip,请尝试以下操作: find . -name <name> -print | zip newZipFile.zip -@ find-name-print | zip newZipFile.zip-@ -@告诉zip从输入读取文件。来自人类 -@文件列表。如果将文件列表指定为-@[不在MacOS上],

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

find . regexpression -exec zip {} \;

但是它不起作用。如何执行此操作?

您使用的命令将在每个文件上分别运行zip,请尝试以下操作:

find . -name <name> -print | zip newZipFile.zip -@
find-name-print | zip newZipFile.zip-@
-@
告诉zip从输入读取文件。来自人类

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


您还可以根据find命令提供名称:

zip name.zip `find . -name <name> -print`
zip name.zip`find-姓名打印`

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

您的响应很接近,但这可能会更好:

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

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

我可以删除此命令中正在压缩的文件吗???否则我将不得不发出另一个命令,比如find-name-exec rm-rf{}\;卸下拉链files@LOGAN最简单的方法是这样做,运行另一个命令,但也许有更好的方法,你应该问一个新问题。在Mac上试用,效果很好。我想你可以删除免责声明,即使在macOS上,免责声明也可以从手册页中删除,但实际上,
-@
选项是有效的。基于此,我将更改
查找-cmin-400-print | zip newZipFile.zip-q@
。做什么?用+sign@aliopi+表示用所有文件名替换{},而不是对每个文件执行一次命令。如果在外部目录中执行搜索,结果可能类似于
home/path/file
。在这种情况下,有必要在此处使用
zip-j
更多信息