![]() |
|
Welcome to the Monastery | |
PerlMonks |
Copy files by date modifiedby svetho (Beadle) |
on Jun 04, 2009 at 07:19 UTC ( #768319=snippet: print w/replies, xml ) | Need Help?? |
#!/usr/bin/perl use strict; use warnings; use File::Path; use File::Basename; use File::Spec; use File::Copy; use Cwd; use Getopt::Long; # make output unbuffered $| = 1; my $path = getcwd; my $mtime = 1; my $dest; my $verbose = ''; my $showhelp = ''; my $result = GetOptions("source=s" => \$path, "mtime=i" => \$mtime, "dest=s" => \$dest, "help" => \$showhelp, "verbose" => \$verbose); # DEBUG # print "\$path = $path\n\$mtime = $mtime\n\$dest = $dest\n\$showhelp += $showhelp\n\$verbose = $verbose\n"; # exit(0); my $usage = "Usage: $0 --dest <destination-path>\n\t" . "[--source <source-path> | --mtime <mtime> | --verbose] [ +--help]\n\t" . "Type $0 --help for more information."; my $help = <<EOHELP; $0 - Copy file hierarchies selectively based on their modification times Options: -s | --source=SourceDir Source path. Default: pwd -m | --mtime mtime (see man find). Default: 1 -d | --dest=DestDir Destination path. Mandatory option. -h | --help Print this help screen. -v | --verbose Be more verbose. Default: false EOHELP if ($showhelp) { print $help; exit(0); } unless ($dest) { die "$usage\n"; } # remove trailing slash from $dest $dest =~ s/\/$//; my $find = "find $path -type f -mtime -$mtime"; my @files = `$find`; my %dirs_created; foreach (@files) { # debug print; chomp; s/^\.\///; my ($filename, $directories, $suffix) = fileparse($_); my $new_dir = File::Spec->canonpath(File::Spec->catdir($dest, $dir +ectories)); unless (exists $dirs_created{$new_dir}) { $dirs_created{$new_dir} = mkpath($new_dir); print "Created $new_dir\n" if $verbose; } copy($_, File::Spec->catfile($new_dir, "$filename$suffix")); print File::Spec->catfile($new_dir, "$filename$suffix") . "\n" if +$verbose; } exit(0);
|
|