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

아카이브가 있습니다

* .tar.gz

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



답변

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


답변

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

또는 GNU tar로

tar xzf archive.tar.gz -C /destination


답변

myArchive.tar/ destinationDirectory로 추출

명령 :

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


답변

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


답변