#!/usr/bin/perl # Created: # 10-02-04 Sapan Bhatia use strict; my $rmask; my $fmask; my $smask; if ($#ARGV<1 || $#ARGV>2) { die "Usage: f.pl \n"; } if ($#ARGV==1) { $rmask=""; } else { $rmask=$ARGV[2]; } $fmask=$ARGV[0]; $smask=$ARGV[1]; recurse_dir($ENV{PWD}); exit(0); sub recurse_dir { my @list; my $dir=shift; my $count; opendir CWD,$dir; @list=readdir(CWD); closedir CWD; shift @list; shift @list; for (@list) { if (-d $dir."/$_") { recurse_dir($dir."/$_"); } else { if (-f "$dir/$_" && "$_"=~/$fmask/) { my @lines; my $found=0; my $path="$dir/$_"; open FIL,"<$path"; @lines=; $count=0; for (@lines) { if (/$smask/) { if (!$found) { print "$path:\n"; $found=1; } print $_; } } if ($found) { print "\n"; } seek FIL,0,0; for (@lines) { print FIL $_; } close FIL; } } } }