Question Comment extraire directement .tar.bz2? (en évitant une création de dossier)


J'extrais toujours ce type de fichiers en utilisant la route où je veux ces fichiers:

# tar -xvf file.tar.bz2 

Mais cela crée toujours un folder appelé "fichier" (pour cet exemple) et stocke tout à l'intérieur.

Je n'ai jamais eu de problème avec cela, mais maintenant je dois éviter ce dossier et simplement extraire tout dans la route où je veux que tout soit.

J'ai lu le man tar (manuel) .. mais je ne peux toujours pas trouver un attribut spécifique qui fait cela.

Comment puis je faire ça? (All in terminal)


4
2018-02-10 03:09


origine




Réponses:


tar ne crée pas un dossier appelé fichier; le dossier fichier est stocké dans l'archive. C’est parce que l’archive tar était créée avec la commande

tar cf foo.tar.bz2 foo

plutôt que

cd foo
tar cf foo.tar.bz2 .

Selon homme tar, vous pouvez utiliser le commutateur --strip-components (--strip-path dans les anciennes versions) pour remplacer cela.

Pour supprimer un seul dossier principal, utilisez cette commande:

tar xvf file.tar.bz2 --strip-components 1

4
2018-02-10 03:20



Génial! Cela a parfaitement fonctionné! .. Si j'ai plus d’un seul dossier dans le fichier .tar et que vous utilisez le --strip-components 1 Qu'est ce que ça fait? .. ou puis-je spécifier le dossier à décompresser? - AAlvz
Il supprime le premier composant de chaque fichier, à savoir, foo/bar/baz sera extrait à ./bar/baz. Si cela n'est pas souhaité, vous devez utiliser plusieurs commandes tar. Avant de déballer, vous pouvez exécuter tar tf file.tar.bz2 pour voir exactement où les fichiers seraient extraits. - Dennis
Ok, je vais les vérifier. Je vous remercie! - AAlvz