#!/usr/bin/perl use strict; use warnings; # This script will the top ten space users # of any directory # Neil Watson Mon Mar 1 13:05:11 EST 2004 use Getopt::Std; use File::Find; use Data::Dumper; my (%opt, $utotal, $uid, $uname, $fname, %size, $size, %files); my ($count); # options available # -d getopts("d:", \%opt); my $dir = $opt{d}; # get file file information find(\&wanted, $dir); # get top ten offenders print "User\t\tTotal (kb)\n"; foreach $uname (sort keys %size){ print $uname."\t\t".$size{$uname}."\n"; } #print Dumper(%files); sub wanted{ # scan only regular files if (-f){ # owner of file but skip # if owner is not a user # (uid < 500) $uid = (lstat($_))[4]; unless ($uid < 500){ $uname = getpwuid $uid; # gather name of file $fname = $File::Find::name; # size of file (kb) $size = (lstat($_))[7]; $size = int($size/1000); # store in a hoh # username {filename} => filesize $files{$uname} {$fname} = $size; # keep running total of each # user's files $size{$uname} += $size; } } }