如何将子目录解压缩到当前目录中?

Cor*_*ing 51 unix command-line tar

如何将tarball中的子目录解压缩到当前目录中?

例如,来自wordpress的tarball :

wordpress/
wordpress/wp-trackback.php
wordpress/wp-config-sample.php
wordpress/wp-settings.php
wordpress/wp-rss2.php
wordpress/readme.html
wordpress/index.php
...
Run Code Online (Sandbox Code Playgroud)

如何将所有内容解压缩wordpress/到当前目录中?换句话说,它不会创建wordpress目录.

我试过这个没有运气:

tar xvfz latest.tar.gz wordpress -C ./
Run Code Online (Sandbox Code Playgroud)

我知道我可以正常提取并将其移回,但我认为必须有一种方法可以一次性完成.

kch*_*kch 89

你为什么不正常解开,然后就是:

mv wordpress/.* .
mv wordpress/* .
rmdir wordpress
Run Code Online (Sandbox Code Playgroud)

但是,唉,有:

tar --strip-components=1 -zxvf wordpress.tgz
Run Code Online (Sandbox Code Playgroud)

  • 第一个命令不起作用 - `mv`将尝试将`wordpress/.`和`wordpress/..`移动到`.`,这将失败. (7认同)
  • 在我的`tar`(CentOS 6.3)的味道上,需要在*其他参数之后指定`--strip-components`.非常有用的选项,谢谢你的指出. (5认同)
  • 我希望有一种方法可以在一个命令中完成它. (4认同)
  • 我喜欢--strip-components = 1,非常好! (4认同)
  • 有趣的是,剥离组件是我的 FreeBSD boxen 的一个选项,但不适用于我的一些较旧的 linux 安装。 (2认同)

j_r*_*ker 6

令人惊讶的是,我的tar(GNU tar v1.16)没有剥离初始路径名元素的选项.

然而,似乎更新版本带有一个--strip-components=number参数,这将从路径的开头剥离许多组件.

如果你像我一样使用的是旧的tar,你是一定的压缩文件不包含一个新的目录或文件wordpress/wordpress,你总是可以只让一个符号链接从wordpress.,然后解压像往常一样:

ln -s . wordpress
tar xvfz latest.tar.gz wordpress
rm wordpress
Run Code Online (Sandbox Code Playgroud)