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

perl 实现du目录的脚本

发布时间:2020-12-15 23:57:43 所属栏目:大数据 来源:网络整理
导读:使用引用来遍历整个目录 #!/usr/bin/perl?-wuse?strict;sub?dir_walk?{????????my?($top,$filefunc,$dirfunc)?=?@_;????????my?$DIR;????????if?(-d?$top){????????????????my?$file;????????????????unless?(opendir?$DIR,$top){????????????????????????wa

使用引用来遍历整个目录

#!/usr/bin/perl?-w
use?strict;

sub?dir_walk?{

????????my?($top,$filefunc,$dirfunc)?=?@_;
????????my?$DIR;
????????if?(-d?$top){
????????????????my?$file;
????????????????unless?(opendir?$DIR,$top){
????????????????????????warn?"Coun't?open?the?$top:$!;skipping.n";
????????????????????????return;
????????????????}
????????????????my?@results;
????????????????while?(?$file?=?readdir?$DIR){
????????????????????????next?if?$file?eq?'.'?||?$file?eq?'..';
????????????????????????
????????????????????????#递归统计文件的大小
????????????????????????push?@results,dir_walk("$top/$file",$dirfunc);
????????????????????????#print?"$top/$file?@resultsn";
?
????????????????}
????????????????#解dir_size引用
????????????????return?$dirfunc->($top,@results);

????????}else?{
????????????????#解file_size的引用
????????????????return?$filefunc->($top);
????????}

}

sub?file_size?{?-s?$_[0]?};

sub?dir_size?{
????????my?$dir?=?shift;
????????my?$total?=?-s?$dir;
????????my?$n;
????????for?$n?(@_){$total?+=?$n?}?????#统计results的值和目录值
????????printf?"%6d?%sn",$total,$dir;?#打印每次循环的目录的大小和目录名
????????return?$total;
}


my?$total_size?=?dir_walk('/downloads/php/serv',&;file_size,&;dir_size);
print?"$total_size?n";

(编辑:李大同)

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

    推荐文章
      热点阅读