Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Is it possible to use the find command so that it searches the files within a tar.gz archive also using wildcards?


find archive.tar.gz --name *foo*
share|improve this question
up vote 12 down vote accepted

How about just:

$ tar tf archive.tar.gz | grep foo
share|improve this answer
doesnt that just list all the files? – clamp Mar 12 '12 at 13:06
@clamp Yes, if you want to do something to each file, simply pipe that output to another command. – user13742 Mar 12 '12 at 13:07
thanks! sorry but im a newbie in unix. i tried: tar tf graphics.tar.gz | find . --name *space* but it says unkown predicate --name – clamp Mar 12 '12 at 13:17
@clamp find arguments only take one dash, but because it's a list of files on stdin, you want to use grep instead, like hesse's example code. Try tar tf graphics.tar.gz | grep 'space' – Kevin Mar 12 '12 at 13:24
grep *foo* isn't a valid regular expression. greg doesn't understand globs, it understands regular expressions. Try grep foo instead. – Alexios Mar 12 '12 at 14:19

Mount the archive as a directory. You can do it with the AVFS filesystem, which allows you to access any archive as a directory whose name has a trailing #.

cd ~/.avfs$PWD
find archive.tar.gz\# -name '*foo*'
share|improve this answer

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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