Shell zip 压缩文件或文件夹
基本用法
-
压缩一个文件📃
zip demo.zip demo.txt -
压缩一个文件夹📁
使用-r选项。
假设当前目录下有个“work”文件夹,
举例:zip -r work.zip work
压缩时排除文件或文件夹
自定义排除文件/文件夹,使用 -x 选项(小写的 x)
排除文件夹
还是以“work”文件夹举例,
-
假设要排除 work 根路径下的“node_modules”文件夹,
zip -r work.zip work -x "/node_modules/*" -
要排除 work 路径下所有的“node_modules”文件夹,包括 work 的子目录里的。
zip -r work.zip work -x "*/node_modules/*" -
排除名称以“
_”开头的文件夹
合理使用通配符“*”,
zip -r work.zip work -x "*/_*/*"
以“_”开头的文件不会被排除
排除文件
-
排除根目录下的单个文件
例如要排除“foo.tmp”,
zip -r work.zip work -x foo.tmp -
排除所有非必要的 Mac 资源/系统文件
例如 “_MACOSX”、 “.DS_Store” 文件,
zip -r work.zip work -x "*/_MACOSX" -x "*/.DS_Store" -
排除所有后缀名为“.tmp” 的文件
zip -r work.zip work -x "*/*.tmp" -
排除文件名以“
_”开头的所有文件
zip -r work.zip work -x "*/_*"
⚠️注意:以“_”开头的子文件夹也会被排除
排除规则很多?
可以把排除规则放在一个文件里,例如“exclude.lst”,每行一个,不要用""引号。例如:
exclude.lst 文件内容:
*/_MACOSX
*/.DS_Store
*/node_modules/*
*/_*/*
命令:zip -r work.zip work -x@exclude.lst
只压缩指定的文件/文件夹
使用 -i 选项(include)
更多命令参考: https://ss64.com/osx/zip.html