我有以下 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%)
$