用perl统计文件夹中文件个数,行数,文件大小,用作项目统计
#! /usr/bin/perl ? # 读取文件行数 open (FILE,$dataFile) or print "Can't open $dataFile: $!"; 这种方法只能读取较小文件。 # 读取文件行数sub countFileLine {??? my $file = shift;??? my $count = 0;??? open (FH,"$file") or die "Can't open the file:$!/n";??? ++$count while (<FH>);??? #####$count即为文件内容行数。如果每行长度一样的话,可以读取文件大小,然后除以每行的长度。??? close FH;?? ?my @lines = split(//./,$file);?? ?my $linescount = @lines;?? ?$filesize = -s $file;?? ?#print $file.$filesize ; print "/n";?? ?# 查处字符串长度?? ?$len = rindex $lines[$linescount-1]."/$","/$";?? ?if($linescount > 1 && $len < 6)?? ?{?? ??? ?$filecatagorycount{$lines[$linescount-1]}++;?? ??? ?$filecatagorysize{$lines[$linescount -1]}+= $filesize;?? ?}?? ?else?? ?{?? ??? ?$filecatagorycount{"NOEXT"}++;?? ??? ?$filecatagorysize{"NOEXT"}+= $filesize;?? ?}?? ??? ?#print @lines;print "/n";??? # print "$count lines in $file/n";??? $totallines += $count;?? ?$totalfiles++;}# 读取目录文件行sub get_dir {??? my $dir = shift;?? ?print "$dir/n";??? opendir (DIR,"$dir") or die "Can't open dir:$!";??? my @file = readdir(DIR);??? closedir(DIR);??? foreach (@file)?? ?{?? ??? ?next if $_ eq '.' or $_ eq '..';?? ??? ?my $file = "$dir/$_";?? ??? ?if (-d $file)?? ??? ?{?? ??? ??? ? get_dir($file);?? ??? ?} ?? ??? ?else?? ??? ?{?? ??? ??? ?countFileLine($file) if -T $file;?? ??? ?}?? ?}?? ?$totaldirs++;} (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |