Linux tar:仅对某些文件进行 --transform

Linux tar:仅对某些文件进行 --transform

我正在编写一个 bash 脚本,将我的应用程序打包成一个 TAR 文件。这些文件在磁盘上的排列方式与它们在 TAR 文件中的排列方式不同,因此我决定使用 --transform 选项。

但是,--transform 命令似乎是全局应用的,而不是应用于之后包含的文件。

例子:

tar \
--exclude='webmanager/bin/dev' \
--exclude='webmanager/.config.ini' \
--show-transformed-names \
--create --gzip --verbose \
--file 'output.tgz' \
-C '../../../' \
'include' \
'resources' \
'webmanager' \
'rootconfig.php' \
-C 'webmanager/bin/dev' \
'index.php' \
'README.md' \
--transform='s|^|webmanager/|r' \
'.config.ini'

基本上,此代码从中获取文件webmanager/bin/dev/.config.ini并将其放置webmanager/.config.ini在 TAR 文件中。但我只希望转换 .config.ini 文件。目前所有内容都正在转换并以 为前缀webmanager/。我希望此命令的行为类似于-C(更改当前目录) - 它仅影响其后的输入。

我查看了 TAR 手册页,但还是不知道该如何正确执行此操作。请帮忙!

答案1

看来这个--transform选项确实适用于所有文件。顺便说一句,我发现了这个关于tar(手册页第 6.8 节:仅对新文件进行操作)可能会对您有所帮助。

如果可以的话,我建议你采用不同的方法:将你需要的文件放在临时目录中(cp命令就可以了),用 修改 .config.in,sed然后使用tar打包所有内容。如果你熟悉 ,你可以创建一个甚至 Makefile 脚本make

相关内容