web-dev-qa-db-ja.com

「tar」コマンドを使用して別のディレクトリにファイルを抽出する方法は?

tar archive.tar /users/mylocationは機能すると思ったが、機能しなかった。どうやってやるの?

662
goovim

現在とは異なるディレクトリにアーカイブを抽出するには、次のように、-C、または--directory、tarオプションを使用します

tar -xf archive.tar -C /target/directory

そのコマンドを実行する前にターゲットディレクトリが存在する必要があることに注意してください(mkdir /target/directoryで作成できます)。

他のオプションについては マニュアルページ (コマンド:man tar)をお読みください。

945
Wesley Rice

Tarballに変更するディレクトリ名が既に含まれている場合は、--strip-components=1オプションを追加することに注意してください。

tar xf archive.tar -C /target/directory --strip-components=1
258
Bryan Larsen

以前の回答とコメントを組み合わせます。

単純にコンテンツを抽出し、ターゲットディレクトリがない場合は作成する:

mkdir -p /target/directory && tar xf archive.tar -C /target/directory

Zipのルート(第1レベル)ディレクトリを抽出して削除するには

mkdir -p /target/directory && tar xf archive.tar -C /target/directory --strip-components=1
30
Thamme Gowda

もう1つのオプションは、-one-top-levelを使用することです。これにより、元のファイル名に基づいてディレクトリが自動的に作成されます。

tar zxvf filename.tgz --one-top-level

さらに、必要に応じて、独自に指定することができ、tarが自動的に作成します。

tar zxvf filename.tgz --one-top-level=new_directory
18

抽出に関して興味深いと思うのは、アーカイブの作成方法に依存することです。この例を参照してください

cd /tmp
mkdir folder
touch folder/file.txt

tar -zcvf folder.tar.gz folderを実行するとすべてが期待どおりになります=展開すると、/tmp/folder/として展開されます(削除した場合はフォルダが作成されます)。

ただし、tarをtar -zcvf tmp-folder.tar.gz /tmp/folderとして作成し、/ tmpフォルダーに展開すると、結果は/tmp/tmp/folderディレクトリになります。このような場合は、/-tar -xf tmp-folder.tar.gz -C /に展開する必要があります

2
Betlista

Tar 1.29では、tarファイル名の後にディレクトリ名を追加するだけです。例えば、

tar zxvf tar-file directory-name/