cike0415 发表于 2017-5-19 12:55:26

perl 把源目录下的文件拷贝到目标目录(带路径)

原文地址:http://blog.csdn.net/qin123qq/article/details/41083741
 
#!/bin/perl
#perl "D:\separateFliesBySearch.pl" "D:/WebRoot" "C:/Users/Documents/" ".xml" "<beans xmlns=\"http:\/\/www\.springframework\.org\/schema\/beans\""
use strict;
use warnings;
use File::Find;
use File::Copy;
use File::Path;
die "使用的参数:$0,不符合要求,请指定目录及搜索内容" unless @ARGV>=4;
my $srcdir = $ARGV;
my $distdir = $ARGV;
my $suffix = $ARGV;
my $reg = $ARGV;
my $verbose = 0;
if($ARGV)
{
 $verbose = $ARGV;
}
searchContentsInFiles($srcdir,$suffix,$reg);
sub searchContentsInFiles
{
 my $srcdir=$_;
 my $suffix=$_;
 
 if(! -e $distdir)
 {
  #第二个参数为是否显示日志,第三个目录权限
  mkpath($distdir,$verbose,0711);
 }
 my @filenames=find( \&wanted,$srcdir);
 
 close FH;
}
sub wanted
{
 my $file = $File::Find::name;
 my $filename=$_;
 my $filedir=$File::Find::dir;
 if(-f $file && /$suffix/ && !/\.svn/)
 {
  open(FH,"$file");
  if(grep {/$reg/} <FH>)
  {
   #$_="$filedir";
   my $tmpfiledir=$filedir;
   $tmpfiledir=~ s/$srcdir//;
   my $tmpdistdir="$distdir$tmpfiledir";
   #print "$tmpdistdir\n";
   if(!-e "$tmpdistdir")
   {
    #第二个参数为是否显示日志,第三个目录权限
    mkpath("$tmpdistdir",$verbose,0711);
   }
   copy($file,"$tmpdistdir");
  }
 }
}
页: [1]
查看完整版本: perl 把源目录下的文件拷贝到目标目录(带路径)