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

関連情報