2009-05-10 8 views
47

tarballのサブディレクトリをカレントディレクトリに展開する方法は?サブディレクトリを現在のディレクトリに展開するにはどうすればよいですか?

例、wordpressからtarボール:

wordpress/ 
wordpress/wp-trackback.php 
wordpress/wp-config-sample.php 
wordpress/wp-settings.php 
wordpress/wp-rss2.php 
wordpress/readme.html 
wordpress/index.php 
... 

私は現在のディレクトリにwordpress/の下にあるすべてのものを抽出するにはどうすればよいですか?つまり、wordpressディレクトリは作成されません。

私は運でこれを試してみた:

tar xvfz latest.tar.gz wordpress -C ./ 

私は通常、それを抽出し、戻ってそれを移動することができます知っているが、私は1回のショットでそれを行うための方法がなければならない把握。

mv wordpress/.* . 
mv wordpress/* . 
rmdir wordpress 

をしかし、悲しいかな、あります:

+0

これらの人には、この質問を閉じることを提案しています。 –

+3

私はこの正確な問題がプログラミングの文脈で浮かび上がってきた。もう少し広範囲にしようとしましょう。人々は - s/wordpress/kernel_source/gが "プログラミング関連"という質問をするのに十分であれば、まず "プログラミング関連"でした。 –

+1

@j_random_hacker - プログラミング関連の質問ではありません。質問は基本的に "私はどのようにUNIXシステム上でtarユーティリティを使うのですか?"それに関連するプログラミングは何もありません。それはserverfaultまたはunixを使用するためのフォーラムに行くかもしれません。 –

答えて

82

なぜあなたは、単に、正常にuntarするはありません驚くべきことに

tar --strip-components=1 -zxvf wordpress.tgz 
+3

私は1つのコマンドでそれを行う方法があることを望んでいました。 –

+1

興味深いことに、stripコンポーネントは私のFreeBSD boxenのオプションですが、私の古いLinuxのインストールの一部ではありません。 –

+0

+1。 tarファイルにwordpress/wordpressというファイルまたはディレクトリが含まれている場合、2番目のmvコマンドは失敗します。 (しかし、隠されたファイルのケースをキャッチするための名誉です。) –

6

、私のtar(GNUのtar v1.16)がありません初期パス名の要素を取り除くオプション。

しかし、最近のバージョンでは--strip-components=numberというパラメータが使用されているため、パスの先頭から多くのコンポーネントが削除されるようです。私のようなあなたがtar古いを使用している、とあなたはいつもちょうどそのいつものように抽出し、.wordpressからシンボリックリンクを作ることができ、アーカイブがwordpress/wordpressという名前のディレクトリやファイルが含まれていないことが確実な場合

ln -s . wordpress 
tar xvfz latest.tar.gz wordpress 
rm wordpress 
+0

私が使っているボックスには、 "strip-components"パラメータがないので、symlinkのアイデアは面白いです1。私は何かが欠けているかどうか疑問に思っています。 Unixはそのようなものです...あなたは尋ねることによってしか学ぶことができない、非自明な方法があります。したがって、私の質問! –

+0

@Cory:まあ、その答えは "タールの開発者が実現し、--strip-componentsオプションを導入した"と思います。 :) –