#! /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++;
}
#! /usr/bin/perl#如果运行perlscript 必须要安装perl,不能用绿色的。#perllib 环境变量加上d:/perl/libuse warnings;sub countFileLine;sub get_dir;$totallines = 0;$totalfiles = 0;$totaldirs = 0;my %filecatagorycount;my %filecatagorysize;get_dir @ARGV;print "所有文件总行数:".$totallines . "
用法numlines = countlines(名称,选项)
输入- NAME:
文件
所在的
文件夹
名称或带有
文件
名的元胞数组(分别为 OPTION='dir' 和 '
file
') - 选项:'dir'(NAME 是一个
文件夹
)或 '
file
'(NAME 是一个
文件
或一组
文件
)
输出- NUMLINES:Nx2 元胞数组,其
中
N 是
文件
数,第一列是
文件
名,第二列是
行数
$
file
name = 'test.
file
';
$lines = 0;
open(
FILE
, $
file
name) or die "Can't open `$
file
name': $!";
while (sysread
FILE
, $buffer, 4096) {
$lines += ($buffer =~ tr/\n//)...
代码
行数
统计
node环境先要安装
perl
真正的检验代码
行数
在工作
中
,前端工作有时候需要代码
行数
的
统计
,有一个很便捷的方式可以快速的
统计
各个类型的代码
行数
,下面就来介绍一下简单的方法。
node环境
首先电脑需要有node环境,如果没有去node官网下载
添加链接描述
根据自己的系统找到对应的软件,去下载安装。检查是否安装过cmd调出
node -v看是否需要安装成功。
先要安装
perl
1、检查...
<br />#!/usr/bin/
perl
-w<br />
open (H
File
,"/usr/develop-program/conf.txt") || die "Open error $!"; # 打开固定路径文本,文本
中
字符以标点符号,空格隔开<br />
@
file
=<H
File
>; #将文本
中
文件
读入到数组
中
<br />
chomp @
file
; #去掉回车<br />
close (H
File
); #关闭
文件
<br />
foreach $_ (@
file