.tar.gzを.tarファイルに抽出する

.tar.gzを.tarファイルに抽出する

.tar.gzbashスクリプト内に二重に圧縮されたファイルがあり、.tarbashスクリプトから自動的に抽出する方法があるかどうか疑問に思います。私は2つの方法を試しました。

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. -z2番目の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. 絶対パスを使用しないでください

おすすめ記事