我有一个双重压缩文件(.tar.gz
在 a 内.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.
你可能需要
-z
在第二个 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
- 我建议在“生产”之前进行测试
- 不要使用绝对路径