Beefy Boxes and Bandwidth Generously Provided by pair Networks
There's more than one way to do things
 
PerlMonks  

findline in all the files in a given directory

by Anonymous Monk
on May 08, 2012 at 19:37 UTC ( [id://969528]=perlquestion: print w/replies, xml ) Need Help??

Anonymous Monk has asked for the wisdom of the Perl Monks concerning the following question:

Hi perlmonks, I need a script where if we pass the line to be searched as an argument,it should list all the files in the directory where this script is ran from.Can anyone please help? Input:-findline "no data received within timeout" output:- should print all the files(*.*) containing this line Thanks

Replies are listed 'Best First'.
Re: findline in all the files in a given directory
by toolic (Bishop) on May 08, 2012 at 19:57 UTC
Re: findline in all the files in a given directory
by Athanasius (Archbishop) on May 09, 2012 at 02:35 UTC

    The following script does what is asked (and no more), using only Perl (with one core module) and looking in the current directory only (no recursion):

    use strict; use warnings; use Cwd; @ARGV == 1 or die "USAGE: $0 <search_line>\n"; printf "Searching directory '%s' for the line '%s':\n\n", Cwd::getcwd(), $ARGV[0]; my $found = 0; opendir my $dh, '.' or die "Unable to open the current directory: $!"; while (my $file = readdir($dh)) { if (-f $file) { open my $fh, '<', $file or die "Unable to open file '$file' for reading: $!"; while (my $line = <$fh>) { chomp $line; if ($line eq $ARGV[0]) { print "Found match in file '$file'\n"; $found = 1; last; } } close $fh or die "Unable to close file '$file': $!"; } } closedir $dh or die "Unable to close the current directory: $!"; print "No matches found\n" unless $found;

    HTH,

    Athanasius <°(((><contra mundum

Re: findline in all the files in a given directory
by Perlbotics (Bishop) on May 08, 2012 at 19:57 UTC

    A Perl script? You could give ack a try. Run it with the -l switch to show filenames only.

Re: findline in all the files in a given directory
by Anonymous Monk on May 08, 2012 at 19:59 UTC

Log In?
Username:
Password:

What's my password?
Create A New User
Domain Nodelet?
Node Status?
node history
Node Type: perlquestion [id://969528]
Approved by toolic
help
Chatterbox?
and the web crawler heard nothing...

How do I use this?Last hourOther CB clients
Other Users?
Others perusing the Monastery: (2)
As of 2024-03-19 06:34 GMT
Sections?
Information?
Find Nodes?
Leftovers?
    Voting Booth?

    No recent polls found