压缩文件时如何排除目录

压缩文件时如何排除目录

我尝试在使用构建存档时排除某个目录zip。以下是我尝试过的方法:

$ zip home.zip -y -r HOME -x '/AppData' -x '/AppData*' -x '/AppData/*' -x 'AppData' -x 'AppData*' -x 'AppData/*'

生产:

  adding: HOME/ (stored 0%)
  adding: HOME/AppData/ (stored 0%)
  adding: HOME/AppData/a (deflated 39%)
  adding: HOME/AppData/LocalLow/ (stored 0%)
  adding: HOME/AppData/LocalLow/Sun/ (stored 0%)
  adding: HOME/AppData/LocalLow/Sun/Java/ (stored 0%)
  adding: HOME/AppData/LocalLow/Sun/Java/a (deflated 39%)
  adding: HOME/AppData/LocalLow/Sun/Java/Deployment/ (stored 0%)
  adding: HOME/AppData/LocalLow/Sun/Java/Deployment/a (deflated 39%)

我的目录树如下所示:

./HOME
./HOME/AppData
./HOME/AppData/a
./HOME/AppData/LocalLow
./HOME/AppData/LocalLow/Sun
./HOME/AppData/LocalLow/Sun/Java
./HOME/AppData/LocalLow/Sun/Java/a
./HOME/AppData/LocalLow/Sun/Java/Deployment
./HOME/AppData/LocalLow/Sun/Java/Deployment/a

所以它似乎忽略了我的-x选择。

该选项的正确语法是什么-x

成立这个帖子但正如你在上面看到的,它并没有解决我的问题。

我在 Windows 7 上的 Cygwin 1.7.35 上使用 Info-ZIP 3.0。

答案1

尝试将其设置为-x '*AppData/*'

答案2

做就是了

-x */AppData/*
# or
--exclude */AppData/*

不要忘记添加第一个斜杠,因为否则它也会匹配其中包含“AppData”的任何路径,而不仅仅是以“AppData”开头的路径。

答案3

看起来匹配的路径zip包括您给它的根路径元素,除非根是.

就我而言,如果我想排除 下的任何内容LocalLow,我需要:

$ zip home.zip -y -r HOME -x 'HOME/AppData/LocalLow/*'

产量:

  adding: HOME/ (stored 0%)
  adding: HOME/AppData/ (stored 0%)
  adding: HOME/AppData/a (deflated 39%)

如果您cd进入HOME目录并用作.根目录,则无需在排除路径中指定根元素:

$ cd HOME
$ zip home.zip -y -r . -x 'AppData/LocalLow/*'

  adding: AppData/ (stored 0%)
  adding: AppData/a (deflated 39%)

相关内容