Beefy Boxes and Bandwidth Generously Provided by pair Networks
laziness, impatience, and hubris
 
PerlMonks  

Re: Perl and or Grep Help!

by oko1 (Deacon)
on Jan 17, 2011 at 23:45 UTC ( #882777=note: print w/ replies, xml ) Need Help??


in reply to Perl and or Grep Help!

Right, "grep" isn't going to work despite the '-r(ecursive)' switch because you've told it to only look for *.pl files in 'mydirectory/' - and no deeper than that. It's intended to either be used with '*' as the file argument, or a list of the directories that you want to look in. You're failing with "find" because you're not asking "grep" to '-l(ist)' the files it found - and possibly because you're failing to quote the metacharacters (*). Here are a couple of ways to make these work (non-Perl... I know, how horrible, right? :)

# Search all files, then filter out the ones that don't end in '.pl' grep -Hnr mail *|grep '^[^:]*\.pl:' > results.txt # Find all .pl files and list the ones that contain 'mail' find /start_dir -name '*.pl' -exec grep -l mail {} \; > results.txt # Find all .pl files and show all the lines matching 'mail' as well as + the file path find /start_dir -name '*.pl' -exec grep -n mail {} /dev/null \; > resu +lts.txt

The last one is an old Unix trick that's been around for a long time, but it still works quite well.

-- 
Education is not the filling of a pail, but the lighting of a fire.
 -- W. B. Yeats


Comment on Re: Perl and or Grep Help!
Download Code
Re^2: Perl and or Grep Help!
by Anonymous Monk on Jan 18, 2011 at 14:56 UTC
    Thanks, it worked very well. I could also specify on this one as an example exclusion of directories I don't want it to scan right?
    find /start_dir -name '*.pl' -exec grep -n mail {} /dev/null \; > res +u +lts.txt
Re^2: Perl and or Grep Help!
by Anonymous Monk on Jan 18, 2011 at 15:19 UTC
    I am trying this way, no success yet.
    find apps/ac/ -name '*.pl' -type d \( -name dirto_escape -o \) -prune +-o -print -exec grep -n sendmail {} /dev/null \; > apps/ac/grep/resu +lts.txt
Re^2: Perl and or Grep Help!
by Anonymous Monk on Jan 18, 2011 at 15:50 UTC
    find /start_dir -name '*.pl' -exec grep -n mail {} /dev/null \; > results.txt

    What is the purpose of the /dev/null? I seem to get the exact same results with and without it.

Log In?
Username:
Password:

What's my password?
Create A New User
Node Status?
node history
Node Type: note [id://882777]
help
Chatterbox?
and the web crawler heard nothing...

How do I use this? | Other CB clients
Other Users?
Others browsing the Monastery: (11)
As of 2015-07-05 20:32 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    The top three priorities of my open tasks are (in descending order of likelihood to be worked on) ...









    Results (68 votes), past polls