tarballから特定のディレクトリを抽出するにはどうすればよいですか?主要なディレクトリを削除しますか?


12

ワードプレスのtarballから特定のディレクトリを抽出したい。特にwp-includes.。tarball内のディレクトリ構造はそうであるように見えますが、それが抽出されたら、ワードプレスの主要なディレクトリはwordpress/wp-includes必要あり./wp-includesません。どうすればいいですか?

回答:


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

すべてを空の名前に書き換えるルールを追加することで、包含リストと書き換えルールをマージできます(つまり、「抽出しない」。前のルールが一致しなかった場合にのみルールが適用されます)。

pax -r <foo.tar -pp -s '!^wordpress/\(wp-includes/\)!\1!' -s !.*!!

5

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

急いでいるという理由だけで後者をやめましたが、前者が存在することを知っておくと良いでしょう。
xenoterracide

除去されたコンポーネントに明示的に名前を付ける必要のないコマンドを使用することは可能でしょうか(例wordpress)。これは、GitHubで抽出したtarballを抽出するときに必要になります。tarballには、削除されたコンポーネントのgitリビジョンが含まれていますが、事前にはわかりません。
tjanez 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.