如何在Linux中压缩一个目录但排除单个文件?

4
我想要压缩一个文件夹,我可以使用以下方法:
zip -r zip_file_name directory 

然而,我想在目录中排除单个文件以避免被压缩到zip文件中。我该怎么做?


6
zip -r zip_file_name directory -x \excluded_file.extension---也许这可以帮助! - Am_I_Helpful
1
可以了,谢谢! - James Esch
1个回答

1

输入你想要压缩的目录。然后:

find . -not -name "file_to_exclude" | zip zip_file_name -@

上述命令将在目录本身中创建zip_file_name.zip。
要在特定路径创建zip,请进入要压缩的目录,然后:
find . -not -name "file_to_exclude" | zip ~/ParticularPath/zip_file_name -@

来自zip的Linux man页面:

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

zip -@ foo

将按每行一个列出的文件存储在stdin中的foo.zip中。

在Unix下,此选项可与find命令结合使用。例如,要归档当前目录及其子目录中的所有C源文件:

find . -name "*.[ch]" -print | zip source -@


find . -not -name "file_to_exclude" -exec zip file_name {} \; 也应该有效。 - Siyuan Ren
1
小提示:如果您在层级结构中有多个同名文件,则此操作会将它们全部排除。 - knarf

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接