.tar에서 특정 폴더 내보내기

.tar에서 특정 폴더 내보내기

/dir1/dir2/ 폴더에 test.tar가 있고 test.tar의 폴더를 /dir1/dir2/ 디렉토리로 추출하고 싶습니다. 내 test.tar의 구조

test.tar
|tdirX/
|tdirY/
|tdirZ/

등.

이제 test.tar/tdirZ를 추출하지 않고 tdirX - tdir Y,... 폴더를 /dir1/dir2/로 추출하고 싶습니다.

참고: 저는 SunOS 5.8을 사용하고 있습니다.

답변1

tar(1)수동내 Solaris 11.4 베타 시스템에서는 다음과 같이 표시됩니다.

파일 이름 대체 와일드카드는 아카이브에서 파일을 추출하는 데 사용할 수 없습니다.

...다음을 사용하는 것이 좋습니다.

tar xvf test.tar $( tar tf test.tar | grep '^tdir[XY]' )

대신에. 그러면 dir[XY]줄 시작 부분과 일치하는 줄 에 대한 아카이브 및 grep의 내용이 나열됩니다 .

사실 추천하는 건

tar xvf test.tar `tar tf test.tar | grep '^tdir[XY]'`

그러나 쉘이 너무 오래되어 이해할 수 없는 한 동일한 것입니다 $(...).

이것은 약간 해킹처럼 느껴집니다(예: 디렉토리에 공백이 있으면 깨집니다). 이 경우에는 다음을 사용할 수 있습니다.

tar xvf test.tar tdirX
tar xvf test.tar tdirY

이는 현재 작업 디렉토리가 이고 /dir1/dir2아카이브가 동일한 디렉토리에 있다고 가정합니다.

답변2

당신이하려는 일을 정확히 따르고 있는지 잘 모르겠습니다. 그러나 tarball의 내용을 사용하여 파일을 만드는 것이 유용할 수 있습니다. 즉: tar tf test.tar > /tmp/listing_of_test-tar.txt. 필요에 따라 파일이 생성되기 전이나 후에 grep 또는 sed를 통해 파이프할 수도 있습니다.

그런 다음 tar의 -I 포함 옵션 또는 -X 제외 옵션을 사용하기 위해 별도의 파일을 생성할 수 있습니다.

관련 정보