tar archive.tar /users/mylocation
は機能すると思ったが、機能しなかった。どうやってやるの?
現在とは異なるディレクトリにアーカイブを抽出するには、次のように、-C
、または--directory
、tarオプションを使用します
tar -xf archive.tar -C /target/directory
そのコマンドを実行する前にターゲットディレクトリが存在する必要があることに注意してください(mkdir /target/directory
で作成できます)。
他のオプションについては マニュアルページ (コマンド:man tar
)をお読みください。
Tarballに変更するディレクトリ名が既に含まれている場合は、--strip-components=1
オプションを追加することに注意してください。
tar xf archive.tar -C /target/directory --strip-components=1
以前の回答とコメントを組み合わせます。
単純にコンテンツを抽出し、ターゲットディレクトリがない場合は作成する:
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
もう1つのオプションは、-one-top-levelを使用することです。これにより、元のファイル名に基づいてディレクトリが自動的に作成されます。
tar zxvf filename.tgz --one-top-level
さらに、必要に応じて、独自に指定することができ、tarが自動的に作成します。
tar zxvf filename.tgz --one-top-level=new_directory
抽出に関して興味深いと思うのは、アーカイブの作成方法に依存することです。この例を参照してください
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 /
に展開する必要があります
Tar 1.29では、tarファイル名の後にディレクトリ名を追加するだけです。例えば、
tar zxvf tar-file directory-name/