#!/usr/bin/perl use strict; # round up the usual suspects... chdir "/home"; opendir( H, "." ) or die $!; my @homers = grep { ( -d and (stat(_))[4] >= 500 ) } readdir H; closedir H; # track down their disk usage open( SH, "| /bin/sh > /tmp/home.scan.$$" ) or die $!; print SH "du -k -s $_\n" for ( @homers ); close SH; # read and print the results from worst to nicest open( U, "/tmp/home.scan.$$" ) or die $!; my %usage = map { (/(\d+)\s+(\S+)/); $2=>$1 } ; close U; print "$_ : $usage{$_}\n" for ( sort { $usage{$b} <=> $usage{$a} } keys %usage ); # all done unlink "/tmp/home.scan.$$"; exit(0);