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 [email protected]

使用 -i 选项(include)
更多命令参考: https://ss64.com/osx/zip.html