web-dev-qa-db-fra.com

Renommer le nom du répertoire avant que tar ne se produise

J'ai un répertoire par exemple /var/tmp/my-dir/ Que je compresse fréquemment avec la commande suivante:

$ cd /var/tmp/
$ tar -zcf my-dir.tar.gz my-dir/*

Plus tard, lorsque je décompose mon-dir.tar.gz , cela crée my-dir/ Dans le répertoire courant. Il semble que le répertoire my-dir Soit "enveloppé" à l'intérieur de l'archive tar. Existe-t-il une option tar pour renommer my-dir Par exemple your-dir avant le goudronnage réel se produit. Pour que ...

$ tar -zxf my-dir.tar.gz
# So that ... this creates your-dir/, instead of my-dir/

Merci.

41
moey

Quel tar?

GNU Tar accepte un --transform argument, auquel vous donnez une expression sed pour manipuler les noms de fichiers.

Par exemple, pour renommer pendant le déballage:

tar -zxf my-dir.tar.gz --transform s/my-dir/your-dir/

Le tar BSD et le tar S ont de même un -s argument, prenant un simple /old/new/ (pas une expression générale sed).

63
ephemient

Pour Mac fonctionne -s drapeau.

Renommer lors de la compression:

tar -zcf my-dir.tar.gz -s /^my-dir/your-dir/ my-dir/*

Renommer sur extrait:

tar -zxf my-dir.tar.gz -s /^my-dir/your-dir/

9
DamneD