我有一个名为“first.tar.gz”的 tar.gz。在它里面我只有一个名为“first”的文件夹(没有其他文件夹或文件)。我想解压 tar.gz,因此文件夹“first”重命名为“second”。
我试过这个:
tar -zxf first.tar.gz --transform s/first/second/
但这对我不起作用。我没有收到任何错误/响应,它只是提取了“第一个”文件夹而没有重命名。 tar的版本是1.26
答案1
--transform
当您与 GNU 一起使用tar
并要求使用 详细输出时-v
,您看到输出的路径名是未转化的路径名。
GNUtar
将根据您的--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