我想从 wordpress tarball 中提取特定目录。具体wp-includes到 .. tarball 中的目录结构似乎是,wordpress/wp-includes但我只需要./wp-includes提取它后,就不需要前导 wordpress 目录。我该怎么做?
Gil*_*il' 13
要提取特定目录(及其内容,递归),只需在命令行上将其作为额外参数传递即可。使用GNU tar,您可以使用--strip-components选项去除前导目录(更一般地使用 转换文件名--transform)。在非 Linux 系统上,您可以使用pax(它在 POSIX 中,但某些 Linux 发行版在其默认安装中省略了它)及其-s选项。
tar xf foo.tar --strip-components=1 wordpress/wp-includes #GNU tar
pax -r <foo.tar -pp -s '!^wordpress/!!' wordpress/wp-includes
Run Code Online (Sandbox Code Playgroud)
您可以通过附加规则将所有内容重写为空名称(这意味着“不提取”;该规则仅适用于先前规则不匹配的情况),从而将包含列表与重写规则合并。
pax -r <foo.tar -pp -s '!^wordpress/\(wp-includes/\)!\1!' -s !.*!!
Run Code Online (Sandbox Code Playgroud)
假设你有 GNU tar,你可以使用--strip-components:
$ tar xaf tarball.tar.gz --strip=1 wordpress/wp-includes
Run Code Online (Sandbox Code Playgroud)
我相信当前版本的 BSD tar 也支持--strip-components. 在最坏的情况下,你可以这样做:
$ tar xzf tarball.tar.gz wordpress/wp-includes
$ mv wordpress/wp-includes .
$ rmdir wordpress
Run Code Online (Sandbox Code Playgroud)