Perl 디 렉 터 리 와 Linux 명령 으로 로 그 를 분석 하 는 코드 인 스 턴 스 공유

인 스 턴 스 코드:

#! /usr/bin/perl -w
$path = '/root/Documents';  #
$dir = "$path/images"; #
$log_file = "$path/access_201209.log"; # nginx 0903~0907,  filesize: 5.4G
$result_file = 'result.f';  #

if(!open $output, ">>$result_file") { #
         die " Open file failed: $!";
}
&find_dir($dir);

sub find_dir() {
        my $base_dir = $_[0]; # $_[0] ( )
        if( !opendir(DIR,"$base_dir") ) {
                warn "open dir failed: $!
";
        }
        my @father_dir = readdir(DIR); #
        closedir(DIR);                 

        $base_dir =~ s/\/$//; # /
        foreach $sub_dir (@father_dir) {
                if($sub_dir =~ /^\./)  { # . ..
                        next;
                }

                if(-d "$base_dir/$sub_dir") { #
                     &find_dir("$base_dir/$sub_dir"); # ,

                }elsif (-f "$base_dir/$sub_dir") { # ....

                 # , theme_skin/blue/images
                 my $this_file = " $base_dir/$sub_dir";
                 $this_file =~ s/$path//;           # /root/Documents

                 # Linux , [$log_file ] [$this_file ]
                 my $result = `grep -c  "$this_file"  $log_file`;  # $this_file ,
                 chomp  $result ;  # Linux ,
                 print $output "$this_file :         $result
";  # $output

                 # , ,
                 unlink "$base_dir/$sub_dir";
                }
        }
}

print "
Finished
";

# result.f , /images/ images/  
# Linux 5 0 ,
# 0 , 0

# 1 :
# gawk -F ':' '$2 ~ / 0 / {print $1}' result.f | xargs rm -rf

# 2 :  ( 1)
# grep ' 0 ' result.f | gawk -F ':' '{print $1}' | xargs rm -rf

좋은 웹페이지 즐겨찾기