zip 命令不会忽略由 -x 标志标记的项目

zip 命令不会忽略由 -x 标志标记的项目

我有以下 zip 命令:

#!/usr/bin/env bash

zip -r dist/output.zip . \
-x dist \
-x .idea \
-x node_modules \
-x scripts \
-x *.zip \
-x .git \
-x .gitignore \
-x .npmignore

我只是尝试压缩当前目录中的所有内容,但忽略 -x 标记的所有内容。

看起来该命令正在工作,除了它没有忽略任何内容,而是压缩所有内容。

答案1

你是对的,这似乎不是很直观。

手册说,在--include选项下

因此,要包含直接位于当前目录下的目录 dir,请使用 zip -r foo . -i "dir/*"

然后

请注意,当前目录需要尾随 /

include 选项在 下引用-x,因此可以安全地假设相同的规则在那里工作。

从示例来看,您需要将 添加到/*所有排除的目录中才能真正排除它们。仅仅列出-x dir/是不行的,它仍然会保存目录中的文件,只是不保存目录本身。所以:

$ mkdir foo bar
$ touch foo/a bar/a
$ zip -r test.zip . -x "foo/*"
updating: bar/ (stored 0%)
updating: bar/a (stored 0%)
$

相关内容