현재 폴더의 내용(숨겨진 파일 및 폴더 제외)을 압축하는 방법은 무엇입니까?
zip -r extension.xpi . -x "*/.*"
이것이 지금까지 가지고 있는 것이지만 여전히 숨겨진 파일을 얻고 있습니다.
답변1
*/.*
하위 디렉터리에는 숨겨진 파일만 포함됩니다 . 그러나 현재 디렉터리나 하위 디렉터리의 하위 디렉터리에는 없습니다. 이것 zip -r extension.xpi . -x ".*"
저것 시도해 보세요 zip -r extension.xpi . -x .\*
.
백슬래시가 핵심이 되어야 한다고 생각합니다. 맨 페이지의 인용문은 다음과 같습니다.
다음과 같이 지정된 파일을 명시적으로 제외합니다.
zip -r foo foo -x \*.o
여기에는 foo.zip에 있는 foo의 내용이 포함되고 .o로 끝나는 모든 파일은 제외됩니다. 백슬래시는 쉘 파일 이름 대체를 방지하므로 zip은 모든 디렉토리 수준에서 이름 일치를 수행합니다.
답변2
허용된 답변은 다음 테스트 디렉터리 구조에서는 작동하지 않습니다.
$ tree .
.
├── adir1
│ ├── afile1
│ ├── afile2
│ ├── afile3
│ └── afile4.txt
├── adir2
│ ├── afile1
│ ├── afile2
│ ├── afile3
│ └── afile4.txt
├── adir3
│ ├── afile1
│ ├── afile2
│ ├── afile3
│ └── afile4.txt
├── afile1
├── afile2
├── afile3
├── foo.test
이 경우에 적합한 솔루션은 다음과 같습니다(더 일반적인 경우라고 생각합니다).
$ find . -type f -not -path '*/\.*' -exec zip -r test.zip {} +
예
$ find . -type f -not -path '*/\.*' -exec zip -r test.zip {} +
updating: adir1/afile1 (stored 0%)
updating: adir1/afile1.zip (stored 0%)
updating: adir1/afile2 (stored 0%)
updating: adir1/afile3 (stored 0%)
updating: adir1/afile4.txt (stored 0%)
updating: adir2/afile1 (stored 0%)
updating: adir2/afile2 (stored 0%)
updating: adir2/afile3 (stored 0%)
updating: adir2/afile4.txt (stored 0%)
updating: adir3/afile1 (stored 0%)
updating: adir3/afile2 (stored 0%)
updating: adir3/afile3 (stored 0%)
updating: adir3/afile4.txt (stored 0%)
updating: afile1 (stored 0%)
updating: afile2 (stored 0%)
updating: afile3 (stored 0%)
updating: foo.test (deflated 87%)