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 *.jpgbut it failed (*.jpg not found) and suggest me to use "--wildcard". So I tried
tar -xf MyTar.tar --wildcard *.jpgI 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.
13 Answers
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.
0Put 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' `