web-dev-qa-db-fra.com

Tar décompresse le dossier, comment changer son nom?

Je crée un script qui télécharge le pilote mongo c:

wget -O mongo.tar.gz https://... \
    && tar -xzvf mongo.tar.gz \
    && cd mongo \
    && ...

Cependant, il échoue dans le cd mongo partie car le nom réel du dossier lorsque je décompresse le goudron est mongo-c-driver-1.7.0. Je ne peux pas compter sur ce nom. Comment le modifier sans savoir à quoi ressemblera le nom?

1
Guerlando OCs

Vous pouvez appliquer une commande sed pour transformer le nom. De man tar

 --transform, --xform EXPRESSION
       use sed replace EXPRESSION to transform file names

Donc:

wget -O - https://... |
    tar -xzv --transform 's:^[^/]*:mongo:'

s:^[^/]*:mongo: remplace tout jusqu'au premier / avec mongo. Vous pouvez diriger le fichier directement vers tar (d'où j'ai utilisé -O - dans wget et a supprimé le -f option dans tar).

Alternativement, vous pouvez élaguer le premier composant et extraire dans un répertoire de votre choix:

mkdir -p mongo && wget -O - https://... |
    tar -xzv --strip-components=1 -C mongo

Où:

 --strip-components=NUMBER
       strip NUMBER leading components from file names on extraction
 -C, --directory DIR
       change to directory DIR
3
muru