tarを使用して特定のフォルダーを別のフォルダーに抽出できますか?


14

私はLinuxの世界は初めてで、つまずきの壁にぶつかったようです。私は、コマンドを使用してspecifcアーカイブを抽出することができます知っているtar xvfz archivename.tar.gz sampledir/私が抽出できるかしかしsampledir/testdir/アーカイブがegcurrentlyアーカイブがパスにある中であることをパスではなく/tmp/archivename.tar.gz、私が抽出したいsampledirtestdirどのパスです/tmp/testdir

回答:


19

あなたが探しているのは-Cオプションです:

$ man tar
<snip>

-C, --directory DIR
       change to directory DIR

あなたの例ごとの使用法:

$ tar xvzf archivename.tar.gz -C /tmp/testdir/ sampledir/

また、最新バージョンでtarは、zgzip圧縮されたファイルを解凍するためにフラグを必要としないことを知りたい場合があります。彼らはそれであることに気づき.gz、Do The Right Thingを自動的に行います。


ありがとう。面白いことに、質問を投稿する前にそれを試してみましたが、失敗しました。たぶん私はオプションを見逃しました。もう一度試してみます。
PeanutsMonkey

輝き。大規模なアーカイブについては、このことをいつも忘れています。
zmonteca

3

すべてを展開してクレイジーなゲームをプレイする必要はありません。Tarは、次の(簡単な)例に示すように、アーカイブ内のファイルのサブセットの抽出のみを完全にサポートします。

/tmp $ mkdir tarsrc
/tmp $ cd tarsrc
/tmp/tarsrc $ mkdir a b
/tmp/tarsrc $ touch a/aaa b/bbb
/tmp/tarsrc $ tar cf ../tartest.tar .
/tmp/tarsrc $ cd ..
/tmp $ mkdir tardest
/tmp $ cd tardest
/tmp/tardest $ tar xf ../tartest.tar ./a    
/tmp/tardest $ ls -R
.:
a/

./a:
aaa

秘Theは、pathspecがtarfileの内容と正確に一致する必要があることです。したがって、を実行するときにtar tf、パスがで始まる場合はを挿入する必要があり、パスがない場合は除外する./必要があります。また、サブ-サブ-サブ-サブ-サブ-サブ-サブ-サブパスを抽出したい場合、作業が完了すると、ファイルシステムの深さがNレベルになります。


ありがとうwomble。たぶん正しい使用例ではないかもしれませんが、私はtarをWinzip、WinRARなどと比較していますが、おそらくtarは使用するのに間違ったコマンドです。同様のプロセスを適用します。たとえば、アーカイブ解除するファイルを選択し(tarがこれを行います)、抽出先のパスを選択します(特定のディレクトリにいる場合を除き、tarはこれを行いません)。
PeanutsMonkey

-C次に、オプションをtarにしたいです。
ウォンブル
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.