tarball에서 특정 디렉토리를 어떻게 추출합니까? 주요 디렉토리를 제거 하시겠습니까?


12

워드 프레스 타르볼에서 특정 디렉토리를 추출하고 싶습니다. 구체적 wp-includes으로 .. tarball 내부의 디렉토리 구조는 wordpress/wp-includes보이지만 ./wp-includes추출되면 주요 워드 프레스 디렉토리가 필요 하지 않습니다. 어떻게해야합니까?

답변:


13

특정 디렉토리 (및 그 내용을 재귀 적으로)를 추출하려면 명령 행에서 추가 인수로 전달하십시오. 함께 GNU 타르 , 당신이 가진 최고의 디렉토리를 제거 할 수 있습니다 --strip-components옵션을 (더 일반적으로 파일 이름을 변환 --transform). Linux 이외의 시스템에서는 pax (POSIX에 있지만 일부 Linux 배포판에서는 기본 설치에서 생략) 및 -s옵션을 사용할 수 있습니다.

tar xf foo.tar --strip-components=1 wordpress/wp-includes  #GNU tar
pax -r <foo.tar -pp -s '!^wordpress/!!' wordpress/wp-includes

빈 이름에 모든 항목을 다시 쓰도록 규칙을 추가하여 포함 목록을 다시 쓰기 규칙과 병합 할 수 있습니다 (“추출하지 않음”을 의미하며, 이전 규칙이 일치하지 않은 경우에만 규칙이 적용됨).

pax -r <foo.tar -pp -s '!^wordpress/\(wp-includes/\)!\1!' -s !.*!!

5

GNU tar가 있다고 가정하면 다음을 사용할 수 있습니다 --strip-components.

$ tar xaf tarball.tar.gz --strip=1 wordpress/wp-includes

BSD tar의 현재 버전도 지원한다고 생각합니다 --strip-components. 최악의 경우 다음을 수행 할 수 있습니다.

$ tar xzf tarball.tar.gz wordpress/wp-includes
$ mv wordpress/wp-includes .
$ rmdir wordpress

나는 서두르 기 때문에 후자를하게되었지만 결국 전자가 존재한다는 것을 아는 것이 좋습니다.
xenoterracide

제거 된 구성 요소의 이름을 명시 적으로 지정하지 않아도되는 명령을 사용할 수 wordpress있습니까 (예 :) ? GitHub에서 추출 할 때 이것이 필요합니다. 미리 알 수없는 제거 된 구성 요소에 git 개정판이 포함 된 tarball을 생성했습니다.
tjanez
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.