http://qs321.pair.com?node_id=150112
Category: NT Admin
Author/Contact Info OzzyOsbourne
Description: Find the owners of directories on large public shares to ease directory cleanup. The Win32::Perms module has had a memory leak for over a year, which may lead to issues on larger directories.
# Finds the owners of files on the global, finds their size, and print
+s them to globalowners.txt
# 7/27/01
# Prints [owner][file][file size (KB)][acess time code][last file acce
+ss][modify time code][last modified date]
# To effectively sort times, sort by the timecodes.
# Import the text file to spreadsheet for best results
# 7.30.01 added autoflush line due to overnight buffer overrun.

use strict;
use Win32::Perms;
use File::Find;


my $dir1='//server/share';

open OUT, ">dirowners.txt";
print OUT "Owner\tSize(KB)\tAccessTimeCode\tLast Accessed\tModifyTimeC
+ode\tLast Modified\tFile\n";

find (\&wanted, $dir1);
close OUT;

sub wanted {
    if (-d){
        my $File  = new Win32::Perms("$File::Find::name")||die "$!";  
+  
        my $Own=$File->Owner();
        my @stat=stat($File::Find::name);
        my $kbytes = $stat[7]/1024;
        my $access = localtime($stat[8]);
        my $modify = localtime($stat[9]);
        print OUT "$Own\t$kbytes\t$stat[8]\t$access\t$stat[9]\t$modify
+\t$File::Find::name\n";
        print "$Own\t$kbytes\t$stat[8]\t$access\t$stat[9]\t$modify\t$F
+ile::Find::name\n";
        $File->Close();

    }
}