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