#!/usr/local/bin/perl use strict; use File::stat; use File::Find; use File::Copy; my $dir ='C:/Users/cthdev34/Desktop/map'; my $bakupdir = 'C:/Users/cthdev34/Desktop/map/bakup'; my @sortFiles; #Elemente älter als 30 Tage my @dirs; #alle Ordner my @fils; #alle Dateien my $st; my $logFile = "$dir/Liste.txt"; my $inum_Tage = 30; #&cd($dir); find(\&sort,$dir); foreach(@dirs){print "Ordner:",$_,"\n";} foreach(@fils){print "Datei:",$_,"\n";} foreach(@sortFiles){print "Sortiert:", $_,"\n";} find(\&liste,$dir); #ALLE ORDNER #****************************************************************************** sub sort { my $file = $File::Find::name; push(@dirs,$file) if (-d $file); push(@fils, $file) if (-f $file); push(@sortFiles,$file) if ( -M $file > $inum_Tage); } #ELEMENTE ÄLTER ALS X TAGE #****************************************************************************** # sub sortierung { # my $file = $File::Find::name; # push(@allFiles,$file) if ( -M $file > $inum_Tage); #} #LOGDATEI #****************************************************************************** sub liste{ open(LOGFILE,">$logFile") or die $!; print LOGFILE "\t\t\t$dir\n"; print LOGFILE "\t\t*****************************************************\n\n"; foreach(@sortFiles){ foreach(@dirs){print LOGFILE "Ordner:",$_,"\n"; } #??????????? $st = stat($_); print LOGFILE "$_ \n\n \t\t\tGröße:",printable_size($st->size),"\t", "Änderungsdatum:",printable_time($st->mtime),"\n\n\n"; } close(LOGFILE); } sub printable_time { my $time = shift; return $time if $time !~ /^\d+$/; my (undef,$min,$hour,$mday,$mon,$year) = localtime($time); return sprintf "%02d.%02d.%04d %02d:%02d", $mday,$mon+1,$year+1900,$hour,$min; } sub printable_size { my $size = shift; return $size if $size !~ /^\d+$/; my $suffix = 'B'; foreach (qw(KB MB GB)) { last if $size < 1000; $size /= 1024; $suffix = $_; } my $format = ($suffix eq 'B' ? "%d " : "%.2f ").$suffix; return sprintf $format, $size; } foreach (@sortFiles){ Move($_,$bakupdir); } #foreach (@all){ #rmdir $_ if (-d $_); #} #STRUKTUR VON DIREKTORYS ERZEUGEN #***************************************************************************** sub Move { my ($dir_file, $bakup) = @_; my @dirs = split '/', $dir_file; my $file = pop @dirs; foreach (@dirs) { next if -d $bakup; mkdir($bakup) or print("Can't create dir $bakup: $!"),return undef; } rename($dir_file, "$bakup/$file") or print("Can't move $dir_file to $bakup: $!"),return undef; return 1; }