26.07.2017 17:59, Dominique Martinet пишет:
Hi,

Stas Sergeev wrote on Wed, Jul 26, 2017 at 05:22:56PM +0300:
I am doing the following:

$ tar cf a.tar a.txt
$ tar rf a.tar --add-file=`pwd`/b.txt --transform=s,`pwd`/,aaa/,
tar: Removing leading `/' from member names

The transform is completely ignored, and
tar complains to leading slash.
But the following case works fine:

$ tar cf a.tar a.txt
$ tar rf a.tar --add-file=b.txt --transform=s,^,aaa/,

Am I doing something wrong, or is it a bug?
The problem is as tar says, due to the leading /.

Say you're in /tmp, the added file will be tmp/b.txt but you are
matching /tmp/b.txt
OK, I see, thanks. But what if I add the file from
some unrelated dir, not an ancestor of cwd?
Then I use the absolute path, but I don't need
this absolute path to be stored in an archive. Is
it possible to tell tar to not include the original
path of an added file? Then I will do the transform
from an empty string, which should work right.

This will work, even if it's not pretty (replace the first / of `pwd` by
a ^ anchor):
$ tar rf a.tar --add-file=$(pwd)/b.txt --transform=s,$(pwd | sed -e 
's:^/:^:')/,aaa/,
This works but still gives the warning about the
leading slash.

Reply via email to