使用 Mac OS X 中的命令行“zip”工具递归压缩目录和子目录中的文件,并从所有子文件夹中排除 .DS_Store 文件

使用 Mac OS X 中的命令行“zip”工具递归压缩目录和子目录中的文件,并从所有子文件夹中排除 .DS_Store 文件

我正在尝试使用 Mac OS X 终端附带的命令行工具创建一个 ZIP 文件zip。我想递归压缩当前文件夹的内容但不包含.DS_Store文件。我正在尝试这样做:

zip -r myarchive.zip . -x .DS_Store

排除当前文件夹中的文件,但不排除递归添加的子文件夹中的文件。如何同时排除所有子文件夹中的所有-x .DS_Store文件?.DS_Store.DS_Store

答案1

在排除选项中添加通配符

zip -r myarchive.zip . -x "*.DS_Store"

答案2

大多数时候我想排除全部隐藏文件,例如.DS_Store.git.gitignore

使用一个简单的命令,您可以处理所有这些,并以递归方式压缩所有文件和子文件夹:

zip -r archive.zip folder -x "*/\.*"

如果档案已经存在,上述命令将覆盖现有文件并将新文件添加到档案中。

如果您想完全替换档案,您将需要以下命令:

zip -FSr archive.zip folder -x "*/\.*"

或者更好的是,在 zsh 中创建一个函数以使生活更轻松

open ~/.zshrc

在别名部分添加以下代码

function zip-visible(){
    zip -FSr $1 $2 -X -x "*/\.*"
}

重新加载 zsh 配置

source ~/.zshrc

像这样使用

zip-visible archive.zip folder

相关内容