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

관련 정보