AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / ubuntu / 问题 / 28476
Accepted
Tom
Tom
Asked: 2011-03-01 12:38:55 +0800 CST2011-03-01 12:38:55 +0800 CST 2011-03-01 12:38:55 +0800 CST

如何压缩文件夹但排除 .git 子文件夹

  • 772

我正在尝试从文件夹创建一个 zip 文件,并且我想.git从生成的 zip 文件中排除子文件夹。

我已经转到我要压缩的文件夹(称为 bitvolution)的父文件夹,我正在做:

zip -r bitvolution.zip bitvolution -x ".git"

但它不排除.git子文件夹。

我尝试了各种组合,-x .git*, -x \.git/*, -x .git/\*, -x \.git/\*. 我也尝试使用 exclude 参数的完整路径......但只是没有到达那里。

zip
  • 8 8 个回答
  • 326725 Views

8 个回答

  • Voted
  1. Best Answer
    Isaiah
    2011-03-01T13:01:20+08:002011-03-01T13:01:20+08:00

    正确的表达式是-x '*.git*',所以完整的命令应该是:

    zip -r bitvolution.zip ./bitvolution -x '*.git*'
    

    来自http://selfsolved.com/problems/zip-command-exclude-svn-director的解释:

    正确的咒语是

    zip -9 -r --exclude=*.svn*  foo.zip [directory-to-compress]
    

    您还可以添加一个
    --exclude=*.DS_Store*以排除烦人的 Mac OS X 目录显示元数据文件。

    请注意,传递给的表达式--exclude使用整个原始相对目录路径作为要匹配的原始字符串。所以.svn/*它本身是行不通的;前面的通配符确保它匹配.svn目录树中任何位置的目录。

    • 362
  2. Blair
    2011-12-15T03:08:08+08:002011-12-15T03:08:08+08:00

    如果您尝试压缩存储在 Git 中的项目,请使用该git archive命令。从源目录中:

    git archive -o bitvolution.zip HEAD
    

    您可以使用任何提交或标签 ID,而不是HEAD在某个时间点存档项目。

    如果您想为每个文件添加前缀(例如,顶级文件夹):

    git archive -o bitvolution.zip --prefix=bitvolution/ HEAD
    

    您还可以在 0(无压缩)和 9(最大压缩)之间调整压缩级别,例如

    git archive -o bitvolution.zip -9 HEAD
    

    有关其他选项,请参阅帮助页面 ( git help archive)。

    • 190
  3. Priit Tamboom
    2011-12-15T02:13:13+08:002011-12-15T02:13:13+08:00

    我添加了反斜杠:

    zip -r bitvolution.zip bitvolution -x \*.git\*
    

    关于反斜杠的手册页:

    反斜杠避免了 shell 文件名替换,因此名称匹配由 zip 在所有目录级别执行。

    • 35
  4. Tatu Lahtela
    2011-12-15T03:12:17+08:002011-12-15T03:12:17+08:00

    假设您在执行此操作的机器上安装了 git,您还可以使用 git 本身来创建存档。

    git archive --format=zip HEAD -o bitvolution.zip
    
    • 13
  5. g10guang
    2018-06-09T01:35:09+08:002018-06-09T01:35:09+08:00

    如果您使用的是 zsh,命令应如下所示:

    zip -r target_name.zip source_dir -x '/*.git/*'
    

    如果您使用:zip -r target_name.zip source_dir -x /*.git/*. 如果没有 'regex',zsh 将在 zip 运行之前处理。您将收到错误消息:

    zsh: no matches found: /*.git/*
    
    • 6
  6. GMP
    2020-12-06T18:18:31+08:002020-12-06T18:18:31+08:00

    这是我使用的示例:

    zip -r workspace.zip workspace -x '*/.git/*' -x '*/.DS_Store/*' -x '*/build/*'
    
    • 6
  7. waz
    2019-10-30T15:11:23+08:002019-10-30T15:11:23+08:00

    如果要忽略整个文件夹,请使用以下格式。

    例如,要忽略node_modules每个端点中的每个文件夹:

    zip -r API.zip API/* -x */node_modules/*
    
    • 5
  8. old shredder
    2022-04-09T01:40:57+08:002022-04-09T01:40:57+08:00

    另一种方法是使用 find ,然后用 grep -v 排除

    find . -type f|grep -v "*.git"|grep -v "node_modules"| zip myFIle.zip -@
    

    对我来说看起来更容易,你可能会 grep -v 其他你不想避免的字符串。如果你在 windows 上,使用busybox ...

    • 0

相关问题

  • 安装程序的问题

  • 创建加密(受密码保护)的 zip 文件

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何运行 .sh 脚本?

    • 16 个回答
  • Marko Smith

    如何安装 .tar.gz(或 .tar.bz2)文件?

    • 14 个回答
  • Marko Smith

    我需要什么命令来解压缩/提取 .tar.gz 文件?

    • 8 个回答
  • Marko Smith

    如何列出所有已安装的软件包

    • 24 个回答
  • Marko Smith

    无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗?

    • 25 个回答
  • Marko Smith

    如何使用命令行将用户添加为新的 sudoer?

    • 7 个回答
  • Marko Smith

    更改文件夹权限和所有权

    • 9 个回答
  • Martin Hope
    EmmyS 我需要什么命令来解压缩/提取 .tar.gz 文件? 2011-02-09 14:50:41 +0800 CST
  • Martin Hope
    Ivan 如何列出所有已安装的软件包 2010-12-17 18:08:49 +0800 CST
  • Martin Hope
    La Ode Adam Saputra 无法锁定管理目录 (/var/lib/dpkg/) 是另一个进程在使用它吗? 2010-11-30 18:12:48 +0800 CST
  • Martin Hope
    David Barry 如何从命令行确定目录(文件夹)的总大小? 2010-08-06 10:20:23 +0800 CST
  • Martin Hope
    jfoucher “以下软件包已被保留:”为什么以及如何解决? 2010-08-01 13:59:22 +0800 CST
  • Martin Hope
    David Ashford 如何删除 PPA? 2010-07-30 01:09:42 +0800 CST

热门标签

10.10 10.04 gnome networking server command-line package-management software-recommendation sound xorg

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve