Extraire des fichiers spécifiques dans une archive tar à l'aide d'un caractère générique

18

J'essaie de créer un script pour extraire uniquement des images jpeg d'une archive contenant de nombreux types de fichiers.

Pour ce faire, j'ai essayé d'utiliser:

   tar -xf MyTar.tar *.jpg

mais il a échoué (* .jpg introuvable) et me suggère d'utiliser "--wildcard". J'ai donc essayé

tar -xf MyTar.tar --wildcard *.jpg

Je l'ai fait, mais ensuite la même erreur et un avertissement différent me disant que l'option "--wildcard" est ambiguë.

J'ai parcouru les pages de manuel de tar, mais je n'ai trouvé aucun indice sur le problème.

AdrieanKhisbe
la source
Quel tar et quelle version? Collez les résultats detar --version
smci

Réponses:

32

Au final, j'ai trouvé puis répondu après une bonne pause. L'option est wildcard s , pluriel ...

Ainsi, la commande

tar -xf MyTar.tar --wildcards "*.jpg"

a fait exactement ce dont j'avais besoin.

AdrieanKhisbe
la source
3

Mettez des guillemets autour du caractère générique comme ceci "*.jpg"pour que le shell n'essaye pas de le développer et le transmette directement à tar. Vous voulez que tar évalue le caractère générique, pas le shell et les guillemets le font.

Nicole Hamilton
la source
0

Pour certaines anciennes versions de tar, ce qui suit est extrait du fichier "man" :

Les caractères génériques de substitution de nom de fichier ne peuvent pas être utilisés pour extraire des fichiers de l'archive. Utilisez plutôt une commande du formulaire:

tar xvf ... /dev/rmt/0 `tar tf ... /dev/rmt/0 | grep 'pattern' `
Ray Peck
la source