find(\&wanted, $directory);
sub wanted
{
if (-d $_) { $totaldirs++; return; }
else {
$totalfiles++;
@Stats = stat($_);
$size = $Stats[7];
$ATime = $Stats[8];
$ModTime = $Stats[9];
$CTime = $Stats[10];
if (!$Windows && $opt_o ) {
$owner = $Stats[4];
$owner = "\\" . getpwuid($owner);
if ($owner eq "\\") { $owner = ''; }
}
elsif ($hasWin32Perms && $opt_o) {
$object = new Win32::Perms ( $_ ) || die;
$owner = $object->Owner();
$object->Close();
}
##################################################################################
## Filter Checks
# Owner
if ($i_owners && ($i_owners ne $owner) && $opt_o) {
return;
}
# File Size
if ($i_filesizemax && $i_filesizemin) {
if ($size > $i_filesizemax || $size < $i_filesizemin) { next; }
}
# Included File Types
if (@i_incfiletypes) {
$match = 0;
foreach my $ext (@i_incfiletypes) {
$ext =~ s/^\.//;
if ($_ =~ m/.$ext$/)
{
$match = 1;
last;
}
}
if (!$match) { return; }
}
# Excluded File Types
if (@i_excfiletypes) {
$match = 0;
foreach my $ext (@i_excfiletypes) {
$ext =~ s/^\.//;
if ($_ =~ m/.$ext$/)
{
$match = 1;
last;
}
}
if ($match) { return; }
}
# Date Modified
if ($i_datemodifiedstart && $i_datemodifiedend) {
if ($ModTime < $i_datemodifiedstart || $ModTime > $i_datemodifiedend) { next; }
}
# Date Created
if ($i_datecreatedstart && $i_datecreatedend) {
if ($CTime < $i_datecreatedstart || $CTime > $i_datecreatedend) { next; }
}
# Date Accessed
if ($i_dateaccessedstart && $i_dateaccessedend) {
if ($ATime < $i_dateaccessedstart || $ATime > $i_dateaccessedend) { next; }
}
$filterfiles++;
##################################################################################
$writer->startTag("File");
## OWNER ###
$writer->dataElement("FileOwner", $owner);All files in directoryname and its subdirectories.
$dir = $File::Find::dir;
#$dir =~ s!\/!!;
$dir =~ s!/!\\!g;
$dir =~ s!\\\\!\\!;
$dir = $dir . "\\";
$dir =~ s!:\\\\!:\\!;
$writer->dataElement("FilePath", $dir);
$writer->dataElement("FileName", $_);
##################################################################################
## FILE ACCESSED
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($ATime);
$year += 1900;
$mon++;
$mday = "0$mday" if $mday < 10;
if ($hour > 12)
{
$hour = $hour - 12;
$ampm = "PM";
}
else {
$hour = 12 if $hour == 0;
$ampm ="AM";
}
$min = "0$min" if $min < 10;
$sec = "0$sec" if $sec < 10;
#print "\t\t$mon/$mday/$year $hour:$min:$sec $ampm\n";
#$writer->dataElement("FileAccessed", "$mon/$mday/$year $hour:$min:$sec $ampm");
$writer->dataElement("FileAccessed", "$mon/$mday/$year");
##################################################################################
## FILE MODIFIED
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($ModTime);
$year += 1900;
$mon++;
$mday = "0$mday" if $mday < 10;
if ($hour > 12) {
$hour = $hour - 12;
$ampm = "PM";
}
else
{
$hour = 12 if $hour == 0;
$ampm ="AM";
}
$min = "0$min" if $min < 10;
$sec = "0$sec" if $sec < 10;
#print FH "\t\t$mon/$mday/$year $hour:$min:$sec $ampm\n";
#$writer->dataElement("FileModified", "$mon/$mday/$year $hour:$min:$sec $ampm");
$writer->dataElement("FileModified", "$mon/$mday/$year");
##################################################################################
## FILE CREATED
($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime($CTime);
$year += 1900;
$mon++;
$mday = "0$mday" if $mday < 10;
if ($hour > 12) {
$hour = $hour - 12;
$ampm = "PM";
}
else
{
$hour = 12 if $hour == 0;
$ampm ="AM";
}
$min = "0$min" if $min < 10;
$sec = "0$sec" if $sec < 10;
#$writer->dataElement("FileCreated", "$mon/$mday/$year $hour:$min:$sec $ampm");
$writer->dataElement("FileCreated", "$mon/$mday/$year");
##################################################################################
# Turn size into KB and round up to next integer divisible by 4
$size = ceil($size / 1024);
while ($size % 4 != 0) { $size++; }
$writer->dataElement("FileSize", $size);
$writer->endTag();
}
}
$writer->endTag();
$writer->end();
$output->close();
#####################################################################
print "File Scan is complete.\n";
print ":::Statistics:::\nDirectories:\t$totaldirs\nFiles:\t$totalfiles\nFiles that passed Filters:\t$filterfiles\n";