On 10-10-2002 1:24, Igor Pechtchanski wrote:
> On Wed, 9 Oct 2002, Sheryl McKeown wrote:
> 
> 
>>Better titled, "That dot thing again on Windows XP
>>Pro..."
>>
>>Ok, again I'm trying to search recursively through a
>>directory structure looking for specific values.
>>
>>According to grep --help grep -R should walk the
>>directory structure.  Cool.
>>
>>So, "grep -i -R path32 *" returns, as expected,
>>.grep -i -R path32 *
>>IntelliLab/IntelliLab.vbp:Path32="..Build"
>>IntelliLab/IntelliLabR.vbp:Path32="..BUILD"
>>IntelliLab/intellilabr.vbpold:Path32="Build"
>>LabTestMnt/LabTestMnt.vbp:Path32="..BUILD"
>>Ordent/ordent.vbp:Path32="..BUILD"
>>QC/qc.vbp:Path32="..BUILD"
>>Reports/Reports.vbp:Path32="..BUILD"
>>RsltsEnt/RsltsEnt.vbp:Path32="..BUILD"
>>RsltsInqry/ptresinq.vbp:Path32="..BUILD"
>>
>>But I want to search only files with a specific
>>extension.  Enter the dot thing.  So I try
>>grep -i -R path32 *.vb*
>>which returns nothing.
>>
>>I understand that the directories, technically, do not
>>have a . in the name, therefore they won't be
>>searched.  The same reason grep -i -R path32 *.*
>>returns nothing.
>>
>>So the question becomes, how do I grep a directory
>>structure and search only files with a specific name.
>>(I prefere a grep only solution vs "find . -name
>>"somefilename" -exec ...).
>>
>>Thanks,
>>Sheryl
> 
> 
> Sheryl,
> 
> This isn't a "dot problem".  This is a grep usage problem.

Specifically, you're telling grep to only look in directories which have 
  '.vb' in their name.

> 
> Frankly, I don't see why you are so opposed to 'find'...  'find . -name
> \*.vb\* -exec grep -ni path32 {} \; -print' can be a very powerful tool.
> If you want the filenames printed before the matches (ala 'grep -R'),
> consider using 'find . -name \*.vb\* -print | xargs grep -i path32'.  If
> you have files with spaces and weird characters, try 'find . -name \*.vb\*
> -print0 | xargs -0 grep -i path32'.

You should always use the -print0/-0 syntax, just in case.  And I'd find 
it a bit more readable as:
        find . -name '*.vb' -print0 | xargs -0 grep -i path32

> 
> Of course, if you really want to stick with "pure grep", you could always
> do 'grep -i -R path32 --include=\*.vb\*' (now that I've pitched in an
> argument in favor of "find" :-D)...  'info grep' should also be quite
> helpful.

Alternatively, you could use zsh as your shell, and just use:
        grep -i path32 **/*.vb*
:-)

  - Michael


--
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple
Bug reporting:         http://cygwin.com/bugs.html
Documentation:         http://cygwin.com/docs.html
FAQ:                   http://cygwin.com/faq/

Reply via email to