1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63
#!/usr/bin/perl -w #Libaries use strict; use warnings; use Cwd; use File::Copy; use File::Find; #no warnings 'File::Find'; binmode(STDIN, ":encoding(cp437)"); binmode(STDOUT, ":encoding(cp437)"); #Variablendeklaration my $dat; my $ende = "A:/"; my $file; my $ordner; my $start = "K:/"; my $ziel; my @dat; my @dir; system('cls'); open(A, ">test2.log") || die "Konnte Datei nicht öffnen: $!"; find(\&wanted, $start); sub wanted { #$File::Find::no_chdir => 1; $file = $File::Find::name."/"; #Ordnerfilter if($file =~ /\$RECYCLE.BIN/) { $file = ""; } if($file =~ /Backups\/backup Ubuntu/) { $file = ""; } if($file =~ /System Volume Information/) { $file = ""; } if($file ne "") { push @dir, $file if (-d $file); } print A $file."\n"; } close(A); open(T, ">test.log") || die "Konnte Datei nicht öffnen: $!"; foreach $ordner(@dir) { print T $ordner."\n"; #$ziel = $ordner; #$ziel =~ s/$start/$ende/g; #chdir $ordner; #@dat = glob(); #foreach $dat(@dat) { #if(!-e $ziel) { mkdir $ziel; } #copy($ordner."/".$dat, $ziel.$dat); #} } close(T);
find(\&wanted, $start);
2012-11-27T11:23:11 HeLLo1001WDas Problem besteht halt nur darin, dass File::Find mir nur die ersten Ordner bringt und dann sagt, dass er nicht mehr tiefer gehen kann. (...)
K:/Ordner1 und das wars. Die ganzen Unterordner zu Ordner1 kann das Modul komischerweise nicht lesen.
1 2 3 4 5 6 7 8 9 10 11 12 13 14
#!/usr/bin/perl -w #Libaries use strict; use warnings; use Cwd; binmode(STDIN, ":encoding(cp437)"); binmode(STDOUT, ":encoding(cp437)"); system('cls'); chdir "K:/server1/images/" || die "$!"; print cwd();
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
/dev/sdc5 on / type ext4 (rw,errors=remount-ro)
proc on /proc type proc (rw,noexec,nosuid,nodev)
sysfs on /sys type sysfs (rw,noexec,nosuid,nodev)
none on /sys/fs/fuse/connections type fusectl (rw)
none on /sys/kernel/debug type debugfs (rw)
none on /sys/kernel/security type securityfs (rw)
udev on /dev type devtmpfs (rw,mode=0755)
devpts on /dev/pts type devpts (rw,noexec,nosuid,gid=5,mode=0620)
tmpfs on /run type tmpfs (rw,noexec,nosuid,size=10%,mode=0755)
none on /run/lock type tmpfs (rw,noexec,nosuid,nodev,size=5242880)
none on /run/shm type tmpfs (rw,nosuid,nodev)
gvfs-fuse-daemon on /home/p/.gvfs type fuse.gvfs-fuse-daemon (rw,nosuid,nodev,user=p)
/dev/sdc2 on /media/4344bc96-cc47-45b3-a5f2-7ccf4fb1fa0e type ext3 (rw,nosuid,nodev,uhelper=udisks)
/dev/sr0 on /media/MassEffect2 type udf (ro,nosuid,nodev,uid=1000,gid=1000,iocharset=utf8,umask=0077,dmode=0500,uhelper=udisks)
/dev/sdh1 on /media/Volume type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sr1 on /media/Fallout 3 type udf (ro,nosuid,nodev,uid=1000,gid=1000,iocharset=utf8,umask=0077,dmode=0500,uhelper=udisks)
/dev/sdc1 on /media/4E38-F893 type vfat (rw,nosuid,nodev,uid=1000,gid=1000,shortname=mixed,dmask=0077,utf8=1,showexec,flush,uhelper=udisks)
/dev/sdj1 on /media/Extern 2 type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sdi1 on /media/Extern 1 type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
/dev/sda2 on /media/9E922D96922D7445 type fuseblk (rw,nosuid,nodev,allow_other,default_permissions,blksize=4096)
Quoteperl.exe - Kein Datenträger
Es befindet sich kein Datenträger im Laufwerk. Legen Sie einen
Datenträger in Laufwerk \Device\Harddisk\DR3 ein.
Abbrechen Wiederholen Weiter
1 2
open(STDERR, '>', 'stderr.log') || die "Can't redirect STDERR: $!"; select(STDERR); $| = 1;
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
#!/usr/bin/perl -w #Libaries use strict; use warnings; use File::Find; no warnings 'File::Find'; binmode(STDIN, ":encoding(cp437)"); binmode(STDOUT, ":encoding(cp437)"); #Variablendeklaration my $file; my $ordner; my $start = "K:/"; my @dir; system('cls'); find(\&wanted, $start); sub wanted { $File::Find::no_chdir = 1; $file = $File::Find::name."/"; #Ordnerfilter(jetzt werden nur die Systemordner gefiltert) if($file =~ /\$RECYCLE.BIN/) { $file = ""; } if($file =~ /System Volume Information/) { $file = ""; } #Schreiben der Pfad in Array @dir if($file ne "") { push @dir, $file if (-d $file); } } #Ausgabe aller Ordnerpfade foreach $ordner(@dir) { print $ordner."\n"; }
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
#!/usr/bin/perl #Libaries use strict; use warnings; use File::Find; #no warnings 'File::Find'; binmode(STDIN, ":encoding(cp437)"); binmode(STDOUT, ":encoding(cp437)"); #Variablendeklaration my $start = "I:/"; my @dirs; system('cls'); sub wanted { my $file = $File::Find::name; # Ausschluesse, was nicht verarbeitet werden soll return if $file =~ m{\$RECYCLE\.BIN} || $file =~ m{RECYCLER} || $file =~ m{System Volume Information} || !-d $file ; # wer es hierher geschafft hat, darf verarbeitet werden push @dirs, $file; } find( # Optionen einmal als HashRef uebergeben { wanted => \&wanted, no_chdir => 1, }, # Liste der Startverzeichnisse $start ); #Ausgabe aller Ordnerpfade print join( "\n", @dirs, '' ); foreach my $ordner ( @dirs ) { print $ordner . "\n"; }
2012-11-27T10:10:23 HeLLo1001WAch ja, bitte nicht wundern wegen den beiden Laufwerksbuchstaben. Dieses Skript soll später mal die beiden Laufwerke synchronisieren.