2009-05-10 7 views
47

tarball의 하위 디렉토리를 현재 디렉토리로 추출하는 방법은 무엇입니까?어떻게 하위 디렉토리를 현재 디렉토리로 압축 해제합니까?

예, wordpress에서 타르 :

wordpress/ 
wordpress/wp-trackback.php 
wordpress/wp-config-sample.php 
wordpress/wp-settings.php 
wordpress/wp-rss2.php 
wordpress/readme.html 
wordpress/index.php 
... 

어떻게 현재 디렉토리에 wordpress/에서 모든 것을 추출합니까? 즉, wordpress 디렉토리를 만들지 않습니다.

tar xvfz latest.tar.gz wordpress -C ./ 

은 내가 일반적으로 그것을 추출하고 다시 이동할 수 있습니다 알고 있지만, 나는 한 번에 그것을 할 수있는 방법이 있어야한다 그림 :

나는 행운 이것을 시도했습니다.

mv wordpress/.* . 
mv wordpress/* . 
rmdir wordpress 

을하지만 슬프게도, 거기 :

+0

다음 질문에 대한 답변과 제안 사항은 무엇입니까? –

+3

프로그래밍 컨텍스트에서이 정확한 문제가 발생했습니다. 사람들이 좀 더 넓어 지도록 노력합시다. s/wordpress/kernel_source/g가 "프로그래밍 관련"이라는 질문을하기에 충분하다면, "프로그래밍 관련"이라고 시작하십시오. –

+1

@j_random_hacker - 프로그래밍 관련 질문이 아닙니다. 질문은 기본적으로 "유닉스 시스템에서 tar 유틸리티를 어떻게 사용합니까?"입니다. 거기에 관련된 프로그래밍은 없습니다. 그것은 유닉스를 사용하기 위해 serverfault 나 포럼에 올 수도 있습니다. –

답변

82

왜 당신은 그냥 일반적으로 압축을 풀어야하지 않는 놀랍게도

tar --strip-components=1 -zxvf wordpress.tgz 
+3

나는 한 명령으로 그것을 할 수있는 방법이 있기를 바랬다. –

+1

흥미롭게도, 필자의 FreeBSD boxen에 대한 옵션은 strip components이지만, 필자의 오래된 리눅스 설치에는 포함되지 않습니다. –

+0

+1. tar 파일에 wordpress/wordpress라는 파일이나 디렉토리가 있으면 두 번째 mv 명령이 실패합니다. (그러나 숨겨진 파일 케이스를 잡기위한 명성.) –

6

, 내 tar (GNU 타르 v1.16)를이 없습니다 옵션을 사용하여 초기 경로 이름 요소를 제거 할 수 있습니다.

그러나 최근 버전에서는 --strip-components=number 매개 변수를 사용하므로 경로 시작 부분에서 많은 구성 요소가 제거됩니다. 나처럼 당신이 tar 이전을 사용하고 당신이 언제나 다음 평소와 같이 추출, .wordpress에서 심볼릭 링크를 만들 수, 아카이브가 wordpress/wordpress라는 이름의 디렉토리 나 파일을 포함하지 않는 것이 확실한 경우

:

ln -s . wordpress 
tar xvfz latest.tar.gz wordpress 
rm wordpress 
+0

저는 "strip-components"매개 변수가 없으므로 symlink 아이디어가 흥미 롭습니다 하나. 나는 우리가 잃어버린 것이 있는지 궁금해합니다. 유닉스는 마치 ... 묻는 것으로서 만 배울 수있는 비 - 명백한 방법이있다. 그러므로 내 질문! –

+0

@Cory : 글쎄, 그 대답은 "타르 개발자들은 깨달았고 --strip-components 옵션을 소개했다"고 생각합니다. :) –

관련 문제