현재 디렉토리의 내용에서 모든 숨겨진 파일을 뺀 내용을 압축하는 방법은 무엇입니까?

현재 디렉토리의 내용에서 모든 숨겨진 파일을 뺀 내용을 압축하는 방법은 무엇입니까?

현재 폴더의 내용(숨겨진 파일 및 폴더 제외)을 압축하는 방법은 무엇입니까?

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

관련 정보