tar.gzを抽出する前にフォルダ名をどのように変更できますか?

tar.gzを抽出する前にフォルダ名をどのように変更できますか?

「first.tar.gz」というtar.gzがあります。その中には「first」というフォルダだけがあります(他のフォルダやファイルはありません)。 tar.gzを解凍したいので、「first」フォルダの名前は「second」に変更されます。

私はこれを試しました:

tar -zxf first.tar.gz --transform s/first/second/

しかし、これは私には効果がありません。エラー/応答がなく、名前を変更せずに「最初の」フォルダを抽出します。タールバージョンは1.26です。

答え1

--transformGNUで作業しtarて詳細な出力を要求すると、出力されるパス-v名は次のようになります。変わらないパス名。

GNUはtarユーザーの式に基づいて--transformパス名を変換しますが、オプションを使用しない限り、出力にそれを報告しません--show-transformed-names

例:

$ tree
.
`-- archive.tar

0 directories, 1 file
$ gtar -t -f archive.tar
first/
first/dir/
first/dir/first.txt
first/dir/file
$ gtar -xv -f archive.tar --transform='s/first/second/'
first/
first/dir/
first/dir/first.txt
first/dir/file

上記のコマンドがアーカイブに保存されているパス名を報告する方法に注意してください。以下では、パス名が適切に変換されていることがわかります。

$ tree
.
|-- archive.tar
`-- second
    `-- dir
        |-- file
        `-- first.txt

2 directories, 3 files

関連情報