次の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%)
$