2013年3月31日星期日

perl 统计某个目录下子目录下某类型文件的行数


实例: 统计 /diska/logs/2013-03-06/email_2013-03-06.txt  的行数,日期为变量;
 
这里需要让perl 取多个文件,方法如下:
my $log_dir = '/diska/logs/';
my @files = glob "$log_dir/*/email*.txt ;
 
定义一个计数的变量;
my $c = 0;
 
for (@files) {
   my $file = $_;
   my $lines = `cat $file|wc -l`;   #计算行数,调用shell 命令,这里也可以用perl 的方法实现
   $c  += $lines;
}
print $c;
 
整个程序如下:
 
#!/usr/bin/perl
use strict;
use warnings;

#my $work_dir='/diska/logs';

#my @files= glob "$work_dir/email_20*";
#for (@files) {
#    my $file = $_;
#    my $lines = `cat $file|wc -l`;
#    print $lines;
#}

my $c=0;
my $work_dir='/diska/logs';
my @files= glob "$work_dir/reg_log/2013-*/email_*.txt";
for (@files) {
    my $file = $_;
    my $lines = `cat $file|wc -l`;
    #print $lines;
    $c += $lines;
}
print $c;

没有评论:

发表评论