Comment décompresser une archive sans le dossier racine, mais en gardant la hiérarchie complète à l'intérieur?

25

Si j'ai une .tararchive et que je l'extrait, cela me donne un seul dossier foocontenant plus de choses, comme ceci:

foo/
  something.txt
  another.txt
  bar/
    something-else.txt

Existe-t-il un moyen de modifier la .tarcommande pour «ignorer» le dossier racine ( foodans ce cas) et simplement extraire tout le contenu de ce dossier directement dans mon cwd comme ceci:

something.txt
another.txt
bar/
  something-else.txt
callum
la source

Réponses:

29

Facile. Utilisez simplement --strip-components=1sur l'archive comme ceci:

tar -xf archive.tar --strip-components=1

Et comme expliqué dans la tarpage de manuel officielle:

--strip-components = NUMBER

supprimer NUMBER composants principaux des noms de fichiers lors de l'extraction

La logique étant que si un chemin se compose foo/something.txtalors le premier «composant» de ce chemin le serait de foo/manière à --strip-components=1laisser tomber foo/le chemin du chemin foo/something.txt.

JakeGould
la source