
二重圧縮されたファイル (.tar.gz
内.tar
) があり、それを bash スクリプトから自動的に抽出する方法があるかどうか知りたいです。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.
-z
2番目のtarにフラグが必要かもしれない-
これは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
- 「本番」に入る前にテストすることをお勧めします
- 絶対パスは使用しないでください