압축 된 아카이브에서 특정 디렉토리로 특정 폴더 만 추출하는 방법은 무엇입니까?


57

압축 된 아카이브에서 특정 디렉토리로 특정 폴더를 어떻게 추출합니까?

나는 사용하려고

unzip "/path/to/archive.zip" "in/archive/folder/" -d "/path/to/unzip/to"

그러나 압축을 풀고 싶을 경로에 폴더 만 생성하고 다른 작업은 수행하지 않습니다.

답변:


59
unzip <target-zip-file> '<folder-to-extract/*>' -d <destination-path> 

EL 6에서 잘 작동합니다


3
이 EL 6은 무엇입니까?
젤다

2
RHEL6 (Enterprise Linux 6)-Red Hat.
slm

이것도 작동합니다. 기본적으로 Mark Adler와 같은 대답이지만 약간 다릅니다.
Enkouyami

@Enkouyami 빼기의 차이는 똑같아 보입니다.
Camilo Martin

1
@Enkouyami 큰 따옴표로 묶인 백 슬래시는 문자를 이스케이프하기 때문에 (아마도 별표가 이스케이프되고 있지만 오타 인 것 같습니다) 작은 따옴표로 백 슬래시는 해석되지 않습니다. 리터럴 백 슬래시를 원하면 "\\"사용됩니다 (그렇지 않으면 항상 어떤 문자가 특수 이스케이프인지 기억해야합니다). 저자가 "글로브 캐릭터 인용"(불필요한)을 의미한다면 인용의 차이입니다. 어느 쪽이든 단일 백 슬래시는 오타입니다.
Camilo Martin

39

시험:

unzip /path/to/archive.zip 'in/archive/folder/*' -d /path/to/unzip/to

4
이것을 했습니까? 내가 얻을 caution: filename not matched: foldername/\*내가 실행할 때 unzip $repozip "$2-master/\*" -d /srv/www/magento/어디서 $2난에서 모든 파일 및 폴더를 끌어 원하는 지퍼의 폴더 이름입니다
jeremy.bass

10
\없이 작동했습니다 "path/*".
Alex

8
"in / archive / folder /"경로를 유지하지 않는 "in / archive / folder / *"의 내용을 추출하는 방법이 있습니까? mv나중에 필요한 파일을 얻기 위해 나중에 사용 합니다.
jerrygarciuh

6
-j그것을 위해 사용하십시오 .
Mark Adler

4
-j모든 경로 정보를 제거하고 모든 파일이 대상 폴더로 이동합니다. 경로의 공통 부분 만 제거하는 방법이 있습니까? 지퍼와 비슷합니다 -r.
밥 스타

6

기존의 두 가지 대답은 모두 정확하지만 대상 디렉토리를 지정하는 것은 약간 까다 롭습니다.

의 말을하자 /target/root/원래의 압축 해제 조치, 예를 들면시 대상 디렉토리입니다 :

unzip -qq src.zip -d "/target/root/"

그런 다음 /target/root/unzip이 작동하는 방식으로 특정 하위 디렉토리 만 추출하려는 경우에도 나중에 대상 디렉토리 와 동일하게 사용해야 합니다.

unzip -qq src.zip "sub/dir/*" "/target/root/"

결국 규칙은 실제로 간단 합니다-d . 옵션에 동일한 대상 루트 디렉토리를 사용하십시오 .

BTW, -qq압축 해제 옵션은 정말 조용합니다. 자유롭게 제거하십시오.


참고 : <kbd> unzip -qq 2.3.zip "magento2-2.3 / vendor / *" "vendor /"</ kbd>를 수행하고 <kbd>주의 : 파일 이름이 일치하지 않습니다 : vendor /`</ kbd>. 이것은 bash의 우분투 설치에 있습니다. 나는 압축을 풀지 않았으며, 아마도 다른 문제가 있었을 것이다.
Chris K
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.