나는 리눅스의 세계에 익숙하지 않으며 걸림돌에 빠진 것 같습니다. 내가 명령을 사용하여을 구체적으로 아카이브를 추출 할 수 있습니다 알고 tar xvfz archivename.tar.gz sampledir/
내가 추출 할 수있는 방법 그러나 sampledir/
에 testdir/
아카이브가 egcurrently 아카이브가 경로에에 있는지 경로보다는 /tmp/archivename.tar.gz
내가 추출하고 싶은 sampledir
에 testdir
있는 경로에 /tmp/testdir
.
답변
찾고있는 것은 -C
옵션입니다.
$ man tar
<snip>
-C, --directory DIR
change to directory DIR
귀하의 예에 따른 사용법 :
$ tar xvzf archivename.tar.gz -C /tmp/testdir/ sampledir/
또한 최신 버전의 플래그는 gzipped 파일의 압축을 풀 tar
때 z
플래그가 필요하지 않습니다 . 그들은 그것이 .gz
자동으로 올바른 일을하고 있음 을 알게 될 것입니다.
답변
당신은 모든 것을 untarring 미친 게임을 할 필요가 없습니다. Tar은 다음과 같은 (사소한) 예와 같이 아카이브에서 파일의 서브 세트 추출 만 완전히 지원합니다.
/tmp $ mkdir tarsrc
/tmp $ cd tarsrc
/tmp/tarsrc $ mkdir a b
/tmp/tarsrc $ touch a/aaa b/bbb
/tmp/tarsrc $ tar cf ../tartest.tar .
/tmp/tarsrc $ cd ..
/tmp $ mkdir tardest
/tmp $ cd tardest
/tmp/tardest $ tar xf ../tartest.tar ./a
/tmp/tardest $ ls -R
.:
a/
./a:
aaa
요령은 경로 스펙이 tarfile의 내용과 정확히 일치해야한다는 것입니다. 따라서을 시작할 때 tar tf
경로가로 시작하면 경로를 입력해야하며 경로가 없으면 경로 ./
를 떠나야합니다. 또한 서브-서브-서브-서브-서브-서브-서브-경로를 추출하려는 경우, 파일 시스템에서 N 레벨까지 끝납니다.