Super User is a question and answer site for computer enthusiasts and power users. 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

I am trying to search a string in a folder "test".

This folder has sub folders and zip files too. I want to search within this directory to find the match.

I used

zgrep '11:57' test
zgrep '11:57' test

But I could not got the result.

can some one tell the exact command for it.

share|improve this question
up vote 1 down vote accepted

You need to specify the files you want to be checked so in this case you should use:

zgrep '11:57' test/*

But you also want sub-directories. For this you need to include the find-command.

find . -print0 | xargs -0 zgrep '11:57'

Edit: I didn't use the find -exec cmd {} option here because according to this blog and this topic -exec runs a separate instance of your command for every find. Especially with lots of files this is not efficient. One pipe to xargs and xargs makes sure it runs your command as few times as possible which is often just once.

share|improve this answer
+1 but this command can be improved by using ... find -type -f -exec zgrep '11:57' {} \; The option -f restricts the match to files, and there is no need for a pipe – MariusMatutiae Oct 23 '13 at 17:30
I especially didn't specify the -exec option (and used xargs) because i read somewhere that with the -exec option zgrep is executed separate for every file/directory. With the xargs it should be executed only once. (I could be wrong here?) – Rik Oct 23 '13 at 17:34
@MariusMatutiae Yep. Here it was. And here. – Rik Oct 23 '13 at 17:39

You must log in to answer this question.

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