ファイルのみを抽出し、抽出中にフォルダを作成しないtarファイルを生成します。

ファイルのみを抽出し、抽出中にフォルダを作成しないtarファイルを生成します。

tar.gzファイルに圧縮したいファイルを含むフォルダがあります。次のコマンドを使用しています。

tar -czvf filename.tar.gz  foldername

もちろん、これはファイルを生成しましたfilename.tar.gz。ただし、tarファイルを解凍すると、デフォルトでフォルダが作成され、filenameすべてのファイルがそのフォルダに保存されます。

tarファイル自体を作成するときにこのフォルダの作成を回避できますか?次のコマンドを試しましたが、機能しません。

tar -czv filename.tar.gz  foldername

Ubuntu 14.04を使用しています。

私の現在のディレクトリ構造は次のとおりです。

~/Test/foldername

ディレクトリフォルダ名には、圧縮したいすべてのファイルが含まれています。私のコードは次のとおりです。

cd Test
tar czvf filename.tar foldername/*

答え1

-C別の方法は、次のコマンドライン引数を使用することです。

tar czvf filename.tar.gz -C foldername .

最後の項目に注意してください。これは、.-edパラメーターを使用して入力したtar後に「このディレクトリ」を含めるように指示します。cdfoldername-C foldername

最終的にtarファイルの名前は./で始まるfoldername/ので、現在の作業ディレクトリに解凍されます。

一方、同様の名前のtarファイルがあり、foldername/X最初のディレクトリコンポーネントなしでそのファイルを解凍したい場合は、このパラメータをお勧め--strip-components=1します。したがって、解凍コマンドは次のようになります。

tar xzf filename.tar.gz --strip-components=1

このパラメータに応じて、すべてのパス名の最初のディレクトリ部分は解凍中に「削除」されます。すべての詳細を確認してくださいman tar

関連情報