我对以下文件进行 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://www.gnu.org/software/tar/manual/html_section/transform.html#transform