File::Find

#!/usr/bin/perl -w
use strict;
use File::Find;

my $path = $ARGV[0]; #搜索的路径
my $name=$ARGV[1]; #搜索的文件名正则
my $exp=$ARGV[2]; #要查找的内容正则
my $rep=$ARGV[3]; #要替换成什么内容

find( \&wanted, $path );

sub wanted {
if (! -d $File::Find::name){
     if ( $File::Find::name =~ /$name/ ) {
        my $qx="perl -p -i.bak -w -e 's/$exp/$rep/g' $File::Find::name";
        print "$qx\n"        
     }    
    }
}

[root@mail lcx]# ./p.pl /lcx \.txt$ '\s+\d.+$' ''
perl -p -i.bak -w -e 's/\s+\d.+$//g' /lcx/a/a.txt
perl -p -i.bak -w -e 's/\s+\d.+$//g' /lcx/a/b/xxx.txt

 

http://search.cpan.org/~jesse/perl-5.12.0/lib/File/Find.pm

posted @ 2010-04-21 17:31  大力  阅读(168)  评论(0编辑  收藏  举报