web-dev-qa-db-ja.com

tarが発生する前にディレクトリ名を変更する

私はディレクトリを持っています/var/tmp/my-dir/次のコマンドで頻繁に圧縮します。

$ cd /var/tmp/
$ tar -zcf my-dir.tar.gz my-dir/*

後でuntarmy-dir.tar.gzすると、現在のディレクトリにmy-dir/が作成されます。 my-dirディレクトリはtarball内に「ラップ」されているようです。 my-dirの名前を変更するtarオプションはありますか。 your-dirbefore実際の風袋引きが行われます。そのため ...

$ tar -zxf my-dir.tar.gz
# So that ... this creates your-dir/, instead of my-dir/

ありがとう。

41
moey

どのtar

GNU Tar は、ファイル名を操作するためにsed式を与える--transform引数を受け入れます。

たとえば、解凍中に名前を変更するには:

tar -zxf my-dir.tar.gz --transform s/my-dir/your-dir/

BSD tarおよびS tarも同様に、単純な-s(一般的なsed式ではない)を取る/old/new/引数を持っています。

63
ephemient

Mac作品の場合-s 国旗。

圧縮時に名前を変更:

tar -zcf my-dir.tar.gz -s /^my-dir/your-dir/ my-dir/*

抽出時に名前を変更:

tar -zxf my-dir.tar.gz -s /^my-dir/your-dir/

9
DamneD