다른 디렉토리에서 tar.gz를 압축 해제하는 방법


270

아카이브가 있습니다

* .tar.gz

대상 디렉토리에서 압축을 풀려면 어떻게해야합니까?


9
왜 모든 downvotes? -C보다 더 많은 옵션이 있습니다 (아마도 그의 버전에서는 이것을 제공하지 않을 수도 있습니다).
Alfe

2
스택 오버플로는 프로그래밍 및 개발 질문을위한 사이트입니다. 이 질문은 프로그래밍이나 개발에 관한 것이 아니기 때문에 주제가 아닌 것 같습니다. 참조 내가 여기에 대해 요청할 수 있습니다 어떤 주제 도움말 센터에서. 아마도 Super User 또는 Unix & Linux Stack Exchange 가 더 좋은 곳일 것입니다.
jww

@jww 귀하의 요점을 확인하는 동안 우리는 포럼 에 이름 tar과 태그가 있습니다 . tarball을 특정 디렉토리로 추출하는 것은 쉘 스크립트의 일부이므로 프로그래밍의 일부일 수 있습니다. 그런 종류의 질문은 어느 포럼에서나 물어볼 수 있습니다. gz
Alfe

답변:


319

Gnu 버전을 사용하는 경우 옵션을 사용하여 -C(또는 --directory긴 옵션을 선호하는 경우) 원하는 대상 디렉토리를 제공 할 수 있습니다 tar. 디렉토리가 존재해야합니다.

mkdir foo
tar -xzf bar.tar.gz -C foo

tar특정 디렉토리로 추출 할 수있는 기능을 사용하지 않는 경우 cd호출하기 전에 대상 디렉토리로 간단히 이동할 수 있습니다 tar. 물론 아카이브의 전체 경로를 제공해야합니다. 범위를 지정하는 서브 쉘에서이를 수행하여 주변 스크립트에 영향을 미치지 않도록 할 수 있습니다.

mkdir foo
(cd foo; tar -xzf ../bar.tar.gz)  # instead of ../ you can use an absolute path as well

또는 아카이브 파일의 절대 경로 나 상대 경로가 적합하지 않은 경우이를 사용하여 범위 지정 서브 쉘 외부에서 아카이브 이름을 지정할 수도 있습니다.

TARGET_PATH=a/very/complex/path/which/might/even/be/absolute
mkdir -p "$TARGET_PATH"
(cd "$TARGET_PATH"; tar -xzf -) < bar.tar.gz

107
gzip -dc archive.tar.gz | tar -xf - -C /destination

또는 GNU tar로

tar xzf archive.tar.gz -C /destination

3
나는 gziptar가 압축 된 아카이브를 이해하지 못하는 경우 를 사용한다는 개념을 좋아한다 .
Alfe

4

myArchive.tar/ destinationDirectory로 추출

명령 :

cd /destinationDirectory
pax -rv -f myArchive.tar -s ',^/,,'

0

for 루프를 사용 하여 여러 .tar.gz 파일을 다른 폴더로 untar 할 수 있습니다 . 다음 코드는 / destination / folder / path를 스크립트의 인수로 사용하여 / destination / folder / path의 현재 위치에있는 모든 .tar.gz 파일을 압축 해제합니다.

if [ $# -ne 1 ];
 then
 echo "invalid argument/s"
 echo "Usage: ./script-file-name.sh /target/directory"
 exit 0
fi
for file in *.tar.gz
do
    tar -zxvf "$file" --directory $1
done
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.