숨겨진 파일없이 터미널을 통해 전체 디렉토리의 zip 아카이브를 어떻게 만들 수 있습니까?


220

숨겨진 폴더 / 파일이 많은 프로젝트가 있습니다. 압축 파일을 만들고 싶지만 아카이브에는 숨겨진 폴더 / 파일이 없어야합니다. 숨겨진 폴더의 파일이 숨겨져 있지 않으면 포함되지 않아야합니다.

다음과 같이 디렉토리의 zip 아카이브를 만들 수 있음을 알고 있습니다.

zip -r zipfile.zip directory

또한 -x 옵션을 사용하여 파일을 제외시킬 수 있다는 것을 알고 있습니다.

zip -r zipfile.zip directory -x .*

작동하지 않았다. 모든 숨겨진 디렉토리는 여전히 zip 파일에있었습니다.

답변:


107

숨겨지지 않은 디렉토리의 숨겨진 파일도 제외됩니다.

find /full_path -path '*/.*' -prune -o -type f -print | zip ~/file.zip -@

2
답변 주셔서 감사합니다. 명령 ( find community-chess/ -path '*/.*' -prune -o -type f -print | zip ~/community-chess.zip -@)이 예상보다 길지만 정상적으로 작동합니다. 하위 디렉토리도 포함되어 있으므로 +1 및 허용되는 답변 :-)
Martin Thoma

104

먼저 zip 설치를 설치하지 않은 경우 먼저 다음과 같이 설치하십시오.

sudo apt-get install zip

그런 다음 단순히 zip 파일을 작성하십시오.

zip -r compressed_filename.zip foldername

숨겨진 파일을 제외하려면 다음을 수행하십시오.

find /folder_path -path '*/.*' -prune -o -type f -print | zip ~/compressed_filename.zip -@

Zip 보관 파일에서 파일 제외 ( http://osxdaily.com/2013/04/30/how-to-exclude-files-from-a-zip-archive/ 에서 가져옴 )

Zip 보관 파일을 만들 때 파일 제외의 기본 사항은 -x플래그를 중심으로하며 , 특정 이름이나 패턴과 일치하는 보관 파일을 파일에서 제외하는 데 사용됩니다. 가장 기본적으로 다음과 같습니다.

zip archive.zip files -x "ExcludeMe"

"Nothanks.jpg"라는 단일 파일을 제외 할 수 있다는 의미입니다.

zip archive.zip images/ -x "Nothanks.jpg"

이것이 유용한 몇 가지 구체적인 예를 살펴 보겠습니다.

Zip 아카이브에서 .DS_Store 파일 제외

이렇게하면 일반적으로 보이지 않는 Mac 메타 데이터 .DS_Store 파일이 기본적으로 번들로 제공되는 zip 아카이브에 포함되지 않습니다.

zip -r archivename.zip archivedirectory -x "*.DS_Store"

그러나 디렉토리에 서브 디렉토리가 포함 된 경우 해당 명령의 다른 변형을 사용하여 ds_store 파일을 서브 디렉토리에서도 제외 시키려고합니다.

zip -r archive.zip directory -x "*/\.DS_Store"

참고 :이 명령이 제대로 작동하려면 모든 쉘에 따옴표가 필요하지는 않지만 bash 쉘 (OS X의 기본값)에서는 와일드 카드와 패턴을 제외하기 위해 따옴표를 사용해야합니다.

Zip 아카이브에서 특정 파일 유형 제외

와일드 카드를 사용하면 확장명에 초점을 두어 특정 유형의 모든 파일을 제외 할 수도 있습니다. 예를 들어이 명령은 .jpg파일을 제외한 전체 디렉토리를 압축 합니다.

zip -r archive.zip directory -x "*.jpg"

파일 이름과 일치하는 특정 파일 확장자 또는 패턴에 맞게 수정할 수 있습니다.

Zip 아카이브에서 .git 또는 .svn 디렉토리 제외

디렉토리를 빼고 .git그 내용을 빼 십시오 :

zip -r zipdir.zip directorytozip -x "*.git*"

.svn디렉토리 를 포함하지 않고 폴더를 압축하십시오 .

zip -r zipped.zip directory -x "*.svn*"

Zip 보관 파일에서 모든 숨겨진 파일 제외

패턴과 와일드 카드를 사용할 수 있기 때문에, 당신은 또한 같은 디렉토리 여부, 기간 접두사 됨으로써 이렇게 만들어진 일부 또는 전부 보이지 않는 파일과 폴더를 제외 할 수 .svn또는 같은 개별 파일 .bash_profile또는 .htaccess.

zip -r archivename.zip directorytozip -x "*.*"

또는 모든 서브 디렉토리에서 보이지 않는 모든 파일을 제외 시키려면 다음을 수행하십시오.

zip -r archive.zip directory -x "*/\.*"

5
우분투 동료 사용자를 도와 주셔서 감사합니다. 새 답변에서 허용 된 답변을 다시 설명하면 혼란이 가중되고 삭제 될 가능성이 높습니다.
hmayag

54

에 추가 "하고 .*(그렇지 않으면 셸 .*이 현재 디렉토리의 도트 파일로 확장 됨) 하위 디렉토리의 숨겨진 파일도 제외합니다.

zip -r zipfile.zip . -x ".*" -x "*/.*"

이렇게하면 .zip 파일에 파일이 추가되지 않아야합니다.

rinzwind@discworld:~/tmp$ ls -la
drwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 tmp
drwxr-xr-x  2 rinzwind rinzwind 4096 2011-08-28 00:15 .tmp
rinzwind@discworld:~/tmp$ zip -r zipfile.zip . -x .*
adding: .tmp/ (stored 0%)
adding: tmp/ (stored 0%)
rinzwind@discworld:~/tmp$ zip -r zipfile.zip . -x ".*" -x "*/.*"
updating: tmp/ (stored 0%)

1
나는 당신의 마지막 진술이 맞다고 생각하지 않습니다. .*쉘에 의해 확장됩니다.
hammar

1
나는 그것이 정확하다고 생각하지만 그것을 제거했다 (확실하지 않다) :)
Rinzwind

이 작동하지 않았다. ss-directories가 추가되었습니다
Martin Thoma

1
제외 할 필요가 그래서,이 패턴은 전체 경로뿐 아니라 파일 기본 이름과 일치 제외 @moose */.*뿐만 아니라 .*( */디렉토리 비어 있지 않은 순서와 일치).
Gilles

이것은 아무것도 변경하지 않고 실행됩니다! 가장 좋은 답변입니다.
Whitecat

8

여기에는 모든 "."이 포함됩니다. 디렉토리, 서브 디렉토리 및 "." 디렉토리 내의 파일 또는 디렉토리 ... 본질적으로 첫 번째 답변이지만 최상위 "." 파일.

find /full_path -path '*.*/.*' -prune -o -type f -print | zip ~/file.zip -@

8

로 시작하는 모든 폴더를 제외하는 예. :

tar cvpzf folder.tgz folder/ --exclude '.*'

더 나은 압축하지만 느리게 :

tar cvpjf folder.tar.bz2 folder/ --exclude '.*'

5

올바른 방법은 다음과 같습니다.

zip -r zipfile.zip directory -x directory/.*

@ downvoter : 무엇이 잘못 되었습니까? 이것은 저에게 효과적입니다.
jobin

Rinzwind의 원래 답변 과 동일한 문제 (현재 수정 됨) : 하위 디렉토리를 제외하지 않습니다. Rinzwind가 언급했듯이 와일드 카드를 인용해야합니다. 그렇지 않으면 쉘이 확장합니다.
Gilles

4

일부 파일 확장자를 제외하고 디렉토리를 압축하는 동안 :

$ cd /path/to/dir
$ zip -r dir.zip . -x "*.log" -x "*.cache"

3

디렉토리에 숨겨진 폴더 및 파일이없는 경우 :

zip -r zipfile.zip directory/*

예배 규칙서: |── .git │   ├── src │   └── Work.file ├── .test │   └── .file └── test.file

$ zip -r zipfile.zip directory/*
adding: directory/src/ (stored 0%)
adding: directory/src/Work.file (stored 0%)
adding: directory/test.file (stored 0%)
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.