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.

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

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.


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.


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' `

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.