Com gnu tar
, você pode usar --xform
(ou --transform
) para preceder /prefix/
para cada nome de arquivo:
tar -xf myArchive.tar.gz --xform='s|^|myArchive/|S'
observe que não há expressão /
in prefix/
e a expressão sed
termina com S
para excluir destinos de link simbólico de transformações de nome de arquivo.
Para testá-lo (dry-run):
tar -tf myArchive.tar.gz --xform='s|^|myArchive/|S' --verbose --show-transformed-names
Para começar, aqui está um script muito simplista que você poderia invocar como extract <file>
:
STRIP=${1%.*} #strip last suffix NAME=${STRIP%.tar} #strip .tar suffix, if present tar -xf "$1" --xform="s|^|$NAME/|S" #run command