
スクリプト用のグラフィカル プログラムを作成しようとしています。
スクリプト内では、tar を使用して tar アーカイブを作成します。
グラフィカル プログラムから、tar アーカイブを作成するファイルの完全な名前を取得します。
tar -cvf temp.tar /home/username/dir1/dir2/selecteddir
私の tar アーカイブには、home、username、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
。