tarballから特定のディレクトリを抽出する方法は?ホームディレクトリを削除しますか?

tarballから特定のディレクトリを抽出する方法は?ホームディレクトリを削除しますか?

wordpress tarballから特定のディレクトリを抽出したいです。具体的にはtarball内のディレクトリ構造のようですが、wp-includes抽出した後は先頭のwordpressディレクトリだけが必要です。どうすればいいですか?.wordpress/wp-includes./wp-includes

答え1

特定のディレクトリ(およびその内容)を再帰的に抽出するには、コマンドラインから追加の引数に渡すだけです。そしてGNU タール、このオプションを使用して先行ディレクトリを削除できます--strip-components(より一般的には変換ファイル名を使用します--transform)。 Linux以外のシステムでは、次のものを使用できます。公園(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 !.*!!

答え2

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

関連情報