Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm List-Subscribe: List-Archive: List-Post: List-Help: , Sender: cygwin-owner AT cygwin DOT com Mail-Followup-To: cygwin AT cygwin DOT com Delivered-To: mailing list cygwin AT cygwin DOT com Message-ID: <20021009235817.59758.qmail@web40507.mail.yahoo.com> Date: Wed, 9 Oct 2002 16:58:17 -0700 (PDT) From: Sheryl McKeown Reply-To: smckeown AT mac DOT com Subject: Re: grep -i -R path32 * vs grep -i -R path32 *.vb* To: cygwin AT cygwin DOT com In-Reply-To: MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Hi Igor, I too am an avocate for find. However, I can't seem to master it's usage in XP's shell. For instance, the find command you suggested "find . -name *.vb* -exec grep -ni path32 {} \; -print" returns the error find: missing argument to `-exec' in the XP shell. The command works fine in the bash shell. More on the XP shell... The command find . -name *.vb* -exec grep -ni path32 {} \; also errors. find: missing argument to `-exec' And interestingly enough, find 'understands' the . find . -name "*.vb*" returns the correct files. "find . -name "*.vb*" ./IntelliLab/IntelliLab.vbp ./IntelliLab/IntelliLab.vbw ./IntelliLab/IntelliLabR.vbp ./IntelliLab/IntelliLabR.vbw ./LabTestMnt/LabTestMnt.vbp ./LabTestMnt/LabTestMnt.vbw ./MasterProjectGroup.vbg ./Ordent/ordent.vbp ./Ordent/ordent.vbw ./QC/qc.vbp ./QC/QC.vbw ./Reports/Reports.vbp ./Reports/Reports.vbw ./RsltsEnt/RsltsEnt.vbp ./RsltsEnt/RsltsEnt.vbw ./RsltsInqry/ptresinq.vbp ./RsltsInqry/Ptresinq.vbw It vaguely makes sense that the . when specified as a wildcard vs a . as specified as part of a file name. But when this command is either piped or -exec to grep I get nothing. Not even an error. 16:47 0 [C:IDATAILAB] .find . -name "*.vb* |grep -i path32 16:47 0 [C:IDATAILAB] .find . -name "*.vb* -exec grep -i path32{} ; The grep command you suggested grep -i -R path32 --include=*.vb* . does work. But that leads me to ask why I have to use the --include. What is the difference between --include=*.vb* and *.vb*? Maybe it's because I'm searching Visual Basic files. _grin, wink_ Additional comments and explanations welcome, Sheryl --- 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. > > 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'. > > 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. > Igor > -- > http://cs.nyu.edu/~pechtcha/ > | _,,,---,,_ pechtcha AT cs DOT nyu DOT edu > ZZZzz /,`.-'`' -. ;-;;,_ igor AT watson DOT ibm DOT com > |,4- ) )-,_. , ( `'-' Igor Pechtchanski > '---''(_/--' `-'_) fL a.k.a > JaguaR-R-R-r-r-r-.-.-. Meow! > > "Water molecules expand as they grow warmer" (C) > Popular Science, Oct'02, p.51 > > > > -- > 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/ > __________________________________________________ Do you Yahoo!? Faith Hill - Exclusive Performances, Videos & More http://faith.yahoo.com -- 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/