我目前在 shellscript 中效率很低:
cp -a $MYPATH /tmp/$VERSION
cd /tmp
tar cjf archive.tar.bz2 $VERSION
Run Code Online (Sandbox Code Playgroud)
我希望所有内容都包含在名为 $VERSION 的目录中 - 有没有办法做到这一点而不必像上述脚本那样复制所有内容?
小智 31
GNU 版本tar支持该--transform选项(及其别名--xform),您可以像这样使用它
tar --transform "s/^$MYPATH/$VERSION/" -cf archive.tar.bz2 "$MYPATH"
Run Code Online (Sandbox Code Playgroud)
例如,给定这个目录树
foo
??? foo.txt
Run Code Online (Sandbox Code Playgroud)
命令
tar --transform "s/^foo/bar/" -cf foo.tar.bz2 foo
Run Code Online (Sandbox Code Playgroud)
将产生一个像
$ tar -tf foo.tar.bz2
bar/
bar/foo.txt
Run Code Online (Sandbox Code Playgroud)
小智 16
要压缩当前目录并添加前缀,这对我有用:
tar --transform 's,^\.,$VERSION,' -cf foo.tar .
Run Code Online (Sandbox Code Playgroud)