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