gunzipとtarを使用してtar.gzファイルを目的の特定のディレクトリに抽出するにはどうすればよいですか?

gunzipとtarを使用してtar.gzファイルを目的の特定のディレクトリに抽出するにはどうすればよいですか?

gunzip -dc /path_to_tar.gz_file/zip1.tar.gz | tar xf -ファイルがあるディレクトリで実行すると、tar.gzよく抽出されます。

tar.gzファイルの内容を特定のディレクトリに配置するにはどうすればよいですか?

これを試しましたが、エラーがgunzip -dc /path_to_tar.gz_file/zip1.tar.gz | tar xf /target_directory発生しました。tar

また、ここではbashスクリプトでこれを実行しようとしており、Solaris 10を実行していることも指摘する必要があります。

答え1

tar次のコマンドを実行して、目的の場所にコンテンツを抽出できます。

tar -zxvf path_to_file -C output_directory

説明したようにtar マンページ:

-C ディレクトリ、 --cd ディレクトリ、 --directory ディレクトリ

cモードとrモードでは、次のファイルを追加する前にディレクトリが変更されます。 x モードでは、アーカイブを開いた後、アーカイブからエントリを抽出する前にディレクトリを変更します。


追加したまま使用中です。ソラリス、次のことを試すことができるようです。

gunzip -dc path_to_file | tar xf - -C path_to_extract

答え2

これはあなたが望むものですか?

tar xzvf file.tar.gz -C /target/directory

答え3

最新のLinuxでは、次のものを使用できます。

tar xzf /path/to/file.tar.gz -C /target/directory/

これは以下とほぼ同じです。

(cd /target/directory/; gzip -cd /path/to/file.tar.gz|tar xf - )

Linuxを使用していない場合は、マニュアルページを確認して、ツールがサポートするオプションを確認してください。

答え4

ここに記載されている他の答えのどれも、tarSolarisの基本的な実装に関するすべての警告には言及していません。 1つの注意点は、基本的に圧縮をサポートしていないことです。簡単な抽出は以下を介して達成できます。

gzip -dc < /path/to/the.tar.gz | tar xvf -

また、次の方法でアーカイブを作成した場合

tar cvf - /path/to/directory | gzip -c > the.tar.gz

このアーカイブを抽出すると、常に元のファイルが上書きされます。これは、Solarisが抽出するときにアーカイブエントリから先行部分を削除tarしないか、パスコンポーネントを削除できないためです。/したがって、第二コンテンツのコピーを作成するには、少し異なるコマンドを使用してアーカイブを作成する必要があります。

tar cvf - -C /path/to/directory . | gzip -c > the.tar.gz

または

(cd /path/to/directory && tar cvf - .) | gzip -c > the.tar.gz

Solaris 実装では、この-Cスイッチは抽出に適用されません。アーカイブが次の2つの方法のいずれかまたは類似の方法を使用して作成されたと仮定すると、2番目の形式バリアントを使用して任意の場所に抽出できます。

gzip -dc < the.tar.gz | (cd /path/to/extraction/point && tar xvf -)

tarGNU( ) をインストールした場合は、/usr/sfw/bin/gtar直接圧縮だけでなくパスの削除もサポートします。この場合、一般的なオプションは次のとおりです。

/usr/sfw/bin/gtar xvzf the.tar.gz

十分でしょう。

関連情報