# sierrathedog04, jonathansamuel@yahoo.com, August 2001
+
# First parameter is the target or VOB directory.
+
# Optional second parameter is the source or current directory.
+
+
# Ver. 1.1, Sept. 13, 2001. Now uses File::Compare instead of diff;
+
# Modified printouts so only files are listed. (Not directories).
+
# Ver. 1.2 Sept. 19, 2001. Accepts optional parameters 'modified' and
+'created' followed
by directory names. If these parameters are used then the program wil
+l copy all modified
files to the modified directory and all changed files to the changed
+directory.
+
use strict;
+
require File::Compare;
+
+
use Getopt::Long;
+
my $modifiedDir;
+
my $createdDir;
+
GetOptions("modified:s" => \$modifiedDir, "created:s", => \$createdDir
+);
$| = 1;
+
+
print "\n";
+
my $targetDir = shift || die "Please pass the name of a target directo
+ry enclosed in quotes. \n";
+
chomp $targetDir;
+
$targetDir =~ s#/$##; # Removes any trailing forward slash from the di
+rectory.
unless (-d $targetDir) {
+
die "$targetDir is not a valid target directory.\nPlease pass the
+name of a valid target directory enclosed in quotes. \n";
}
my $sourceDir = shift || ".";
unless (-d $sourceDir) {
die "$sourceDir is not a valid source directory.\nPlease pass the
+name of a valid source directory enclosed in quotes. \n";
}
if (defined $modifiedDir){
unless (-d $modifiedDir) {
die "$modifiedDir is not a valid modified directory. \
+nPlease use the --modified option to pass the name of a valid directo
+ry \nto which you wish to copy all modified files.";
}
}
if (defined $createdDir){
unless (-d $createdDir) {
die "$createdDir is not a valid created directory. \nP
+lease use the --created option to pass the name of a valid directory
+\nto which you wish to copy all created files.";
}
}
opendir THISDIR, $sourceDir;
my @allFiles = grep { $_ ne '.' and $_ ne '..' && -f "$sourceDir/$_"}
+ readdir THISDIR;
closedir THISDIR;
foreach (@allFiles) {
if (File::Compare::compare("$sourceDir/$_", "$targetDir/$_") =
+= 1) {
print "$_ in source directory $sourceDir differs from
+ that in target directory $targetDir\n\n";
print `cp $sourceDir/$_ $modifiedDir/$_` if defined $
+modifiedDir;
} elsif (File::Compare::compare("$sourceDir/$_", "$targetDir/$
+_") < 0) {
print "$_ found in source directory $sourceDir but not
+ in target directory $targetDir\n\n";
print `cp $sourceDir/$_ $createdDir/$_` if defined $m
+odifiedDir;
}
}
print "\n...Finished checking source.\n\n\n";
opendir targetDIR, $targetDir;
my @alltargetFiles = grep { $_ ne '.' and $_ ne '..' && -f $_} readd
+ir targetDIR;
foreach (@alltargetFiles) {
print "$_ found in target directory $targetDir but not in sour
+ce directory $sourceDir\n\n" if File::Compare::compare("$sourceDir/$_
+", "$targetDir/$_") < 0;
}
|