45

I'm trying to create a script to extract only jpeg pictures from an archive containing many kind of files.

To do so, I tried to use:

   tar -xf MyTar.tar *.jpg

but it failed (*.jpg not found) and suggest me to use "--wildcard". So I tried

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

I did that, but then the same error and a different warning saying to me that the option "--wildcard" is ambiguous.

I've been over the man pages for tar, but didn't find a clue about the problem.

1
  • Which tar and which version? Paste the results of tar --version
    – smci
    Nov 28, 2017 at 6:14

3 Answers 3

69

In the end, I found then answer after a good break. The option is wildcards, plural...

So the command

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

did exactly what I needed.

0
5

Put quotes around the wildcard like this "*.jpg" so the shell won't try expanding it and will instead pass it straight through to tar. You want tar to evaluate the wildcard, not the shell and the quotes do that.

0
1

For some older versions of tar, the following is extracted from the "man" file:

Filename substitution wildcards cannot be used for extracting files from the archive. Rather, use a command of the form:

tar xvf ... /dev/rmt/0 `tar tf ... /dev/rmt/0 | grep 'pattern' `

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .