.tar 파일 내에서 .tar.gz 추출

.tar 파일 내에서 .tar.gz 추출

이중 압축 파일( .tar.gz내부 .tar)이 있는데 bash 스크립트에서 자동으로 추출할 수 있는 방법이 있는지 알고 싶습니다. 나는 두 가지 접근 방식을 시도했습니다.

tar -xf $1 #the first .tar file is passed as argument to the bash script
tar -xf /home/user/working_dir/file_inside.tar.gz #passing the absolute path to the file assuming the .tar file was extracted as expected.
tar -xf $1 | tar -xf `xargs` 

하지만 오류가 발생합니다 tar: /file_inside.tar.gz: Cannot open: No such file or directory.

미리 감사드립니다.

답변1

중간 파일의 상대 파일 이름을 알고 있다면 시도해 보십시오.

tar -xf $1 -O path/to/file.tar.gz | tar xf - 

어디

   -O, --to-stdout
          Extract files to standard output.
  1. -z두 번째 tar에 플래그가 필요할 수도 있습니다.

  2. 이는 -stdin의 동의어입니다. 아마도 당신이 의미한 것이 ( tar -xf $1 | tar -xf xargs(*) ) 일까요?

    tar -xf $1 | tar -xf - 
    

(*) xargs는 역따옴표로 묶였습니다.


모험을 느끼고 싶다면 옵션을 시도해 볼 수도 있습니다.--to-command=COMMAND

tar -xf $1 --to-command="tar -xzf -" path/to/file
  1. "프로덕션"을 진행하기 전에 테스트하는 것이 좋습니다.
  2. 절대 경로를 사용하지 마십시오

관련 정보