回答:
特定のディレクトリ(およびその内容を再帰的に)を抽出するには、コマンドラインで追加の引数として渡します。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を抽出するときに必要になります。tarballには、削除されたコンポーネントのgitリビジョンが含まれていますが、事前にはわかりません。