如何使用tar的--transform参数?

如何使用tar的--transform参数?

我对以下文件进行 tar 和 zip 压缩:

/opt/abc/xyz/abc.xml

到:

/tmp/backup/abc.xml.tar.gz

我试图解压并解压到/opt/abc/xyz/(same path)目录。

我遇到了下面的命令。我以root用户身份执行它,但没有发现任何错误或输出。我期望下面的命令将从abc.xml中 提取abc.xml.tar.gz并重命名为abc.xml_v9.

tar --force-local --transform='s/abc.xml/abc.xml_v9/' -zxpsf /tmp/backup/abc.xml.tar.gz -C /

输出应该是

/opt/abc/xyz/abc.xml_v9

tar 的手册页显示以下信息

File name transformations:      

       --transform=EXPRESSION, --xform=EXPRESSION
              use sed replace EXPRESSION to transform file names

              File name matching options (affect both exclude and include patterns):

有人可以通过一些例子帮助我理解上面的命令吗?

答案1

使用您的示例文件源/tmp/backup/abc.xml.tar.gz和目标/opt/abc/xyz/abc.xml_v9。你可以使用这个命令:

tar --transform='flags=r;s|abc.xml|abc.xml_v9|' -xvf abc.xml.tar.gz -C /opt

或者

tar --transform='flags=r;s/abc.xml/abc.xml_v9/' -xvf abc.xml.tar.gz -C /opt

你会得到

/opt/abc/xyz/abc.xml_v9

看:

https://stackoverflow.com/questions/21790843/how-to-rename-files-you-put-into-a-tar-archive-using-linux-tar

https://www.gnu.org/software/tar/manual/html_section/transform.html#transform

相关内容