GNU tar(1)
有一个名为的简洁选项--transform
。从手册页:
--transform,--xform EXPRESSION
使用sed替换EXPRESSION来转换文件名
这样就可以在提取存档时动态转换路径名,以便您可以控制提取位置和方式。
我的问题是,是否有一种方法可以在原位执行类似的转换;即,没有提取档案?
例
[user@host]$ tar tf test.tar
./foo/blah ./foo/bleh
[user@host]$ some_deep_magic 's/foo/bar/' test.tar
[user@host]$ tar tf test.tar
./bar/blah ./bar/bleh
用例
我正在将tar
归档文件分发给基本上毫无头绪的最终用户,并且希望将其提取到正确的路径中,而不会受到我的干扰。我试图避免提取存档,重命名目录和重新打包的简单解决方案,因为存档比较大。
为什么创建名称时不转换名称?
—
Jose Luis Martin
@JoseLuisMartin对。我的用例是存档已经存在,并且正如我所说,我希望避免解压缩,转换和重新打包。
—
Joseph R.
您可以修改该焦油物流没有实际它解压到硬盘:github.com/mafintosh/tar-stream#modifying-existing-tarballs,perldoc.perl.org/5.10.1/Archive/Tar.html等
—
vladr