
私のスクリプト用のグラフィックプログラムを作成しようとしています。
スクリプトでは、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
--transform
2番目の方法は、式を取得して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
。