加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

用perl统计文件夹中文件个数,行数,文件大小,用作项目统计

发布时间:2020-12-16 00:40:13 所属栏目:大数据 来源:网络整理
导读:#! /usr/bin/perl #如果运行perlscript 必须要安装perl,不能用绿色的。 #perllib 环境变量加上d:/perl/lib use warnings; sub countFileLine; sub get_dir; $totallines = 0; $totalfiles = 0; $totaldirs = 0; my %filecatagorycount; my %filecatagorysiz

#! /usr/bin/perl
#如果运行perlscript 必须要安装perl,不能用绿色的。
#perllib 环境变量加上d:/perl/lib
use warnings;

sub countFileLine;
sub get_dir;

$totallines = 0;
$totalfiles = 0;
$totaldirs = 0;

my %filecatagorycount;
my %filecatagorysize;

get_dir @ARGV;
print "所有文件总行数:".$totallines . "?? " .$totallines/10000;print "万行/n";
print "所有文件总数:".$totalfiles;print "/n";
print "所有文件夹总数:".$totaldirs;print "/n";
# 打印每种类型文件个数
foreach(sort keys%filecatagorycount) #排序
{
?? ?print "后缀名为【 $_ 】文件个数 => $filecatagorycount{$_}","?? 文件大小 => ",$filecatagorysize{$_}/1024/1024,"M","/n";
}
my @filter = qw(h cpp pro pri );
my $filtersize = 0;
foreach (@filter)
{
??? print "/t".$_ . "/n";
??? $filtersize+=$filecatagorysize{$_}/1024/1024;
??? #print; #打印默认变量
}
print "通过[ @filter ] 过滤后总大小为? ".$filtersize,"M/n";

?

# 读取文件行数

open (FILE,$dataFile) or print "Can't open $dataFile: $!";
my @fileList = <FILE>;
close (FILE);
my $totalfile += ($#fileList + 1);

这种方法只能读取较小文件。

# 读取文件行数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++;}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读