Pour extraire un répertoire spécifique (et son contenu, récursivement), passez-le simplement comme argument supplémentaire sur la ligne de commande. Avec GNU tar , vous pouvez supprimer un répertoire principal avec l' --strip-components
option (et plus généralement transformer les noms de fichiers avec --transform
). Sur les systèmes non Linux, vous pouvez utiliser pax (c'est dans POSIX, mais certaines distributions Linux omettent de leur installation par défaut) et son -s
option.
tar xf foo.tar --strip-components=1 wordpress/wp-includes #GNU tar
pax -r <foo.tar -pp -s '!^wordpress/!!' wordpress/wp-includes
Vous pouvez fusionner la liste d'inclusion avec les règles de réécriture en ajoutant une règle pour tout réécrire sous le nom vide (ce qui signifie «ne pas extraire»; la règle ne s'applique que si les règles précédentes ne correspondent pas).
pax -r <foo.tar -pp -s '!^wordpress/\(wp-includes/\)!\1!' -s !.*!!
Gilles 'SO- arrête d'être méchant'
la source
wordpress
)? J'ai besoin de cela lorsque j'extrais des tarballs créés par GitHub qui contiennent la révision git dans le composant supprimé que je ne connais pas à l'avance.