Extrahieren Sie .tar.gz in eine .tar-Datei

Extrahieren Sie .tar.gz in eine .tar-Datei

Ich habe eine doppelt komprimierte Datei ( .tar.gzin einem .tar) und würde gerne wissen, ob es eine Möglichkeit gibt, sie automatisch aus einem Bash-Skript zu extrahieren. Ich habe zwei Ansätze ausprobiert:

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` 

Aber ich bekomme den Fehler: tar: /file_inside.tar.gz: Cannot open: No such file or directory.

Dank im Voraus.

Antwort1

Wenn Sie den relativen Dateinamen der Zwischendatei kennen, versuchen Sie

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

Wo

   -O, --to-stdout
          Extract files to standard output.
  1. Möglicherweise benötigen Sie -zein Flag im zweiten Tar

  2. bitte beachten Sie, dass dies -ein Synonym für stdin ist, vielleicht meinten Sie das ( tar -xf $1 | tar -xf xargs(*) )?

    tar -xf $1 | tar -xf - 
    

(*) xargs wird zurückzitiert


Wenn Sie abenteuerlustig sind, können Sie auch die Option--to-command=COMMAND

tar -xf $1 --to-command="tar -xzf -" path/to/file
  1. Ich empfehle, vor dem Start der „Produktion“ zu testen.
  2. Keinen absoluten Pfad verwenden

verwandte Informationen