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