我正在通过运行脚本创建 tar 文件。脚本位于文件夹 A 中。我想将文件附加到 tar 中。输入文件和 tar 文件均位于文件夹 B 中。当我将文件附加到现有 tar 时,我已提供绝对文件路径,因为它位于另一个文件夹中,当它要附加到 tar 中时,它应该重命名为我想要的名称。
例子:
- 脚本位置:
/root/test/A
- 我想在 tar 中添加的文件位置:
/root/myFolder/B/foo
- Tar 文件位置:
/root/myFolder/B/archive.tar
而附加/root/myFolder/B/foo
到archive.tar
它时应该重命名为bar
。
我正在尝试这个命令,但没有成功:
tar --transform='flags=r;s|/root/myFolder/B/foo|bar|' -cf archive.tar /root/myFolder/B/foo
它正在添加同名文件/root/myFolder/B/foo
。
答案1
原因是tar
自动删除前导/
:
tar:从成员名称中删除前导“/”
看起来它在正则表达式执行之前就被删除了。因此您/
还需要删除模式中的前导:
tar --transform='flags=r;s|root/myFolder/B/foo|bar|' -cf archive.tar /root/myFolder/B/foo
或使用-P
开关
-P, --absolute-names
don't strip leading '/'s from file names
另外,您可以使用 切换到文件文件夹-C
,这样就不需要替换路径了:
tar --transform='flags=r;s|foo|bar|' -cf archive.tar -C /root/myFolder/B/ foo