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"; (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |