Answers:
要提取特定目录(及其内容,以递归方式),只需在命令行上将其作为附加参数传递即可。使用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
您可以通过添加规则以将所有内容重写为空名称来将包含列表与重写规则合并(这表示“请勿提取”;该规则仅在先前规则不匹配的情况下适用)。
pax -r <foo.tar -pp -s '!^wordpress/\(wp-includes/\)!\1!' -s !.*!!
假设您拥有GNU tar,则可以使用--strip-components
:
$ tar xaf tarball.tar.gz --strip=1 wordpress/wp-includes
我相信当前版本的BSD tar也支持--strip-components
。在最坏的情况下,您可以执行以下操作:
$ tar xzf tarball.tar.gz wordpress/wp-includes
$ mv wordpress/wp-includes .
$ rmdir wordpress
wordpress
)的命令?当我解压GitHub创建的tarball时,需要这个,它在剥离的组件中包含git版本,而我事先不知道。