gunzip -dc /path_to_tar.gz_file/zip1.tar.gz | tar xf -
当我在文件所在的目录中运行时tar.gz
,它提取得很好。
我如何告诉它将文件内容放入tar.gz
特定目录?
我尝试了这个gunzip -dc /path_to_tar.gz_file/zip1.tar.gz | tar xf /target_directory
但出现tar
错误。
我还应该在这里指出,我正在尝试在 bash 脚本中执行此操作,并且我正在运行 Solaris 10。
答案1
答案2
这是你想要的吗?
tar xzvf file.tar.gz -C /target/directory
答案3
在现代 Linux 上你可以使用:
tar xzf /path/to/file.tar.gz -C /target/directory/
这几乎相当于:
(cd /target/directory/; gzip -cd /path/to/file.tar.gz|tar xf - )
如果您使用的不是 Linux,请检查您的手册页以了解您的工具支持的选项。
答案4
这里的其他答案都没有提到tar
Solaris 中默认实现的所有注意事项。其中一个警告是它本身不支持压缩。简单提取可以通过以下方式实现:
gzip -dc < /path/to/the.tar.gz | tar xvf -
此外,如果您通过类似的方式创建了存档
tar cvf - /path/to/directory | gzip -c > the.tar.gz
您会发现提取此存档总是会覆盖原始文件。这是因为 Solaris在提取时tar
不会/
从归档条目中删除前导部分,也无法删除路径组件。所以如果你想能够提取一个第二内容的副本,您将必须使用稍微不同的命令创建存档:
tar cvf - -C /path/to/directory . | gzip -c > the.tar.gz
或者
(cd /path/to/directory && tar cvf - .) | gzip -c > the.tar.gz
在 Solaris 实现中,该-C
开关不适用于提取。假设存档是使用这两种方法之一或类似方法创建的,第二种形式的变体将允许提取到任意位置:
gzip -dc < the.tar.gz | (cd /path/to/extraction/point && tar xvf -)
如果您tar
安装了 GNU ( /usr/sfw/bin/gtar
),它支持直接压缩以及路径剥离。在这种情况下,通常的选项如
/usr/sfw/bin/gtar xvzf the.tar.gz
就足够了。