7zip:排除隐藏目录

13

使用7zip命令行版本创建归档文件时,如何排除隐藏目录?

我尝试使用-x!".*",但没有效果。


如果你知道隐藏文件的模式,比如 .svn 或 .git 等等,那么很容易处理。但如果没有模式,那么就必须进行分期处理。 - prashant thakre
4个回答

19

如果您想匹配子目录中的文件,您需要将r("recurse")标志添加到-x选项中。

例如,以下命令可以从folder/目录树下的所有文件创建一个归档文件,但不包括任何以点开头的文件:

7z a -xr'!.*' archive.7z folder/

1
请注意,在Bash和Zsh中,感叹号必须用引号括起来。 - smls

12

我在Windows 7 64位系统上使用7zip也遇到了同样的问题。

经过一些研究,我发现以下几点:

1)在Windows系统中,单引号/双引号' "无法正常工作 - 7zip会显示错误的通配符。

2)无法基于文件/文件夹属性进行排除 - 唯一的选择是使用通配符进行排除或创建一个排除列表。

3)在-x选项中,文件表示为<path>\<filename.ext>,文件夹表示为<path>\<folder>/(以斜杠结尾)。

4)格式1:使用!号(直接与命令一起使用的模式),可以给出以下内容:

  a) 7z a -xr!<path>\<folder to exclude>/ archive.7z <zip folder>/

这将递归地从Zip文件中的任何路径中排除 .svn 文件夹。

  b) 7z a -xr!*\.svn/ archive.7z <folder>/  

5) 格式2: 使用 @ 符号,您可以给出排除列表,例如:

  a) 7z a -xr@<7z exclude list file> <archive name>.7z <folder>/

排除列表文件可以包含以下内容:

  *\.svn/
  *\output/
  *\Document/
  *\Measurements/
  *.xlsx
  *.bak
我的首选方案是使用排除列表。

单引号在 PowerShell 脚本中可以使用。 - Sébastien
感谢您提供详细的解释和示例!但是,在使用尾随斜杠或不使用尾随斜杠(您所说的第三点)时,对于7z a -xr!*\node_modules/ archive.7z d:\Workspace\my-project命令并没有产生任何影响。 - hennzen
谢谢您提供的信息和赞赏。新版本可能会修改-x选项和解释方式。我会再次检查并修改我的答案。 - Prasad Narasimha

4

这可以用于忽略隐藏文件... 7z.exe a -xr!.git\ -xr!*~ ".zip"


这就是我需要的,排除.git隐藏文件夹,它起作用了! - undefined

2

我在Win64系统上遇到了一个问题,需要使用排除文件。我无法将.git文件夹排除在外。简单的“.git\”无效,其他常见模式也无效。最终采用了“*git\”来排除(注意:没有点号)。


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