親ディレクトリなしでtarアーカイブを作成する

親ディレクトリなしでtarアーカイブを作成する

私のスクリプト用のグラフィックプログラムを作成しようとしています。

スクリプトでは、tarを使用してtarアーカイブを作成します。

グラフィックプログラムでtarアーカイブを生成するファイルのフルネームを取得します。

tar -cvf temp.tar /home/username/dir1/dir2/selecteddir 

私のtarアーカイブには、home、ユーザー名、dir1、dir2、selecteddirが含まれており、tarからselecteddirのみを含むアーカイブを作成したいと思います。

答え1

-Cオプションを使用してtarこれを実行できます。

tar -C /home/username/dir1/dir2 -cvf temp.tar selecteddir

マニュアルページからtar

-C directory
         In c and r mode, this changes the directory before adding the following files.  
         In x mode, change directories after opening the archive but before extracting 
         entries from the archive.

答え2

この問題を解決するには、2 つの方法を使用できます。

私の考えでは、最初の方が簡単だと思います。cd圧縮したいディレクトリのすぐ上に移動します。この場合はdir2

$ cd /home/username/dir1/dir2/
$ tar -cvf temp.tar selecteddir

--transform2番目の方法は、式を取得してsedファイル名に対して実行するオプションを使用することです。注:式内/でエスケープする必要がありますsed

$ tar -cvf temp.tar /home/username/dir1/dir2/selecteddir --transform='s/\/home\/username\/dir1\/dir2\///g'

答え3

まず作業ディレクトリを入力し、

cd /your/working/directory/ 

その後、魔法を使用してください*:-)

tar -cvf temp.tar *

答え4

ドットディレクトリを回避するには、事実の後にドットディレクトリを削除できます。

tar czC /path/to/dir . --transform='s,^\./,,' >| foo.tgz

次の内容のみを含むアーカイブが作成されます。コンテンツ/path/to/dir

関連情報