it-swarm-ko.tech

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

wordpress tarball. 구체적으로 wp-includes에서 .까지 특정 디렉토리를 추출하고 싶습니다. tarball 내부의 디렉토리 구조가 wordpress/wp-includes하지만 일단 추출되면 ./wp-includes가 필요합니다. 선행 wordpress 디렉토리가 없습니다. 어떻게해야합니까?

12
xenoterracide

특정 디렉토리 (및 그 내용, 재귀 적으로)를 추출하려면 명령 줄에 추가 인수로 전달하면됩니다. GNU tar 를 사용하면 --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 !.*!!

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
5
cjm