如何在将文件添加到 tar 文件时更改文件名

如何在将文件添加到 tar 文件时更改文件名

我正在通过运行脚本创建 tar 文件。脚本位于文件夹 A 中。我想将文件附加到 tar 中。输入文件和 tar 文件均位于文件夹 B 中。当我将文件附加到现有 tar 时,我已提供绝对文件路径,因为它位于另一个文件夹中,当它要附加到 tar 中时,它应该重命名为我想要的名称。

例子:

  • 脚本位置:/root/test/A
  • 我想在 tar 中添加的文件位置:/root/myFolder/B/foo
  • Tar 文件位置:/root/myFolder/B/archive.tar

而附加/root/myFolder/B/fooarchive.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

相关内容