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