前のピリオドなしで現在のディレクトリのtarアーカイブを作成します。

前のピリオドなしで現在のディレクトリのtarアーカイブを作成します。

私が次のことをしたとき:

tar czvf ../myarchive.tar.gz ./

私のtarアーカイブに(迷惑な)ルートフォルダがあります。

吸う

アーカイブを作成するときにこの恐ろしい期間をどのように削除できますか?

答え1

これは、tarパラメータに指定した方法でパス構造が生成されるために発生します。だからあなたが準拠ソースとしてアーカイブも同じ構造で作成されます。

これを試してみることができます(注:これは隠しファイルと一致しません。):

tar -czvf ../myarchive.tar.gz *

n.stのコメントとzhouxの回答情報で更新されました。

tar --xform s:'^./':: -czvf ../myarchive.tar.gz ./

答え2

知りません。

name=${PWD##*/}
cd ..
tar czf "$name.tar.gz" "$name"

(注:シェルが現在のディレクトリシンボリックリンクトレースをオンにしていて、現在のディレクトリがシンボリックリンクを介してアクセスされている場合は機能しません。)

はい、それはあなたが要求したものではありませんが、あなたがしなければならないことです。現在のディレクトリに多くのファイルがあるアーカイブを拡張するのは面倒です。これは、アーカイブを解凍し、ファイルの宛先ディレクトリを作成するすべての人に負担をかけ、誤って空でないディレクトリに解凍するとクリーンアップが困難です。ほとんどの場合、アーカイブは名前がアーカイブのデフォルト名である最上位ディレクトリを作成する必要があります。

答え3

前に^を追加することをお勧めします。

tar --xform s:'^./':: -czvf ../myarchive.tar.gz ./

または、「/」がフルパス名の末尾にない限り、アーカイブ内のフルパス名のすべての「/」が削除されます。

関連情報