【问题标题】:How do I untar a subdirectory into the current directory? [closed]如何将子目录解压到当前目录? [关闭]
【发布时间】:2009-05-10 16:14:43
【问题描述】:

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

例如,来自wordpress 的压缩包:

wordpress/
wordpress/wp-trackback.php
wordpress/wp-config-sample.php
wordpress/wp-settings.php
wordpress/wp-rss2.php
wordpress/readme.html
wordpress/index.php
...

如何将wordpress/ 下的所有内容提取到当前目录中?也就是说,它不会创建wordpress 目录。

我试过这个没有运气:

tar xvfz latest.tar.gz wordpress -C ./

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

【问题讨论】:

  • 我在编程环境中遇到过这个确切的问题。让我们尝试更开阔一点,人们——如果 s/wordpress/kernel_source/g 足以提出一个“与编程相关”的问题,那么一开始就是“与编程相关”。
  • @j_random_hacker - 问题与编程无关。问题基本上是“如何在 unix 系统上使用 tar 实用程序?”没有任何与此相关的编程。它可能会出现在服务器故障或使用 unix 的论坛上。
  • 没有比这里更好的地方来提出这样的问题了。如果这个地方排除了“非编程”问题,那么网站的范围需要扩大到包括我的问题。另外,还有很多关于 tar 的类似问题没有基于这些理由关闭(我在发布之前检查过)。如果你要关闭它,你也应该关闭它们。或者我应该稍微改一下这个问题,问“如何将 $RANDOM_LIBRARY”提取到当前目录中”,这样听起来像是与编程有关,但真的是我在欺骗系统?
  • 看在皮特的份上,这家伙甚至试图解压他的 php 文件。这个网站不仅仅是关于编程,它是关于知道如何使用启用它的工具。这就是为什么我们有丰富的关于 vim 和 emacs 的部分。 Tar 是其中一种工具,传递命令行参数只是一种简单的脚本语言。
  • 我的意思是,看看相关的东西......有很多“非编程”问题没有解决。为什么要挑出这个......在问这里之前,我已经广泛搜索了这个问题的答案。我的意思是——这与 +5 一个编程有什么关系:stackoverflow.com/questions/223656/…

标签: unix command-line tar


【解决方案1】:

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

mv wordpress/.* .
mv wordpress/* .
rmdir wordpress

但是,可惜的是:

tar --strip-components=1 -zxvf wordpress.tgz

【讨论】:

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

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

不过,最近的版本似乎带有 --strip-components=number 参数,这会从路径的开头去除那么多组件。

如果您像我一样使用较旧的tar,并且您确定存档不包含名为wordpress/wordpress 的目录或文件,您可以随时创建从wordpress. 的符号链接,然后像往常一样提取:

ln -s . wordpress
tar xvfz latest.tar.gz wordpress
rm wordpress

【讨论】:

  • 我所在的盒子没有那个“strip-components”参数,所以符号链接的想法很有趣。我不禁想知道我们是否缺少某些东西。 Unix就是这样……通常有一些不明显的方法,你只能通过询问来学习。因此我的问题!
  • @Cory:嗯,我认为答案是“tar 开发人员意识到,并引入了 --strip-components 选项。” :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-04-27
  • 2017-07-13
  • 1970-01-01
  • 2023-03-18
  • 1970-01-01
  • 2011-02-26
  • 1970-01-01
相关资源
最近更新 更多