Mail Archives: cygwin/2002/10/09/19:33:24
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/
- Raw text -