아카이브가 있습니다
* .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