Observe a interferência implícita entre a barra usada como separador para o padrão de substituição e a substituição e a barra usada como o separador de diretório. Se o diretório atual for, por exemplo /foo/bar
, a string que você está atribuindo a tar
is
/^/foo/bar//foo/bar/package/
em que ^
é considerado padrão, foo
como substituto e o restante como sinalizadores. Aqui, recebo um erro para o b
:
tar: Invalid replacement flag b
Felizmente, o tar
no meu Mac aceita outros caracteres no lugar do separador de barra, portanto, você pode usar, digamos, ~
, o que facilita colocar nomes de caminho completos no padrão. por exemplo. -s "~^a$~x/y~"
funciona e renomeia a
para x/y
.
As escapes com contrabarra ( \/
, 7
ou \x2f
) parecem não funcionar, então você precisa escolher como separador algum caractere que não seja necessário nos próprios padrões.