Thread regex Dateinamen
(6 answers)
Opened by rc27 at 2013-06-24 09:09
Du kannst es entweder alles mit
Code (perl): (dl
)
1 2 3 4 5 6 7 8 9 10 11 for my $fname (@files) { if( $fname=~/regex/ ) { verschiebe($fname, $von, $nach); } elsif( $fname=~/regex/ ) { verschiebe($fname, $von, $nach); } #... Code (perl): (dl
)
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 my @aktionen=( [qr/(kx[0-9]{6})/i, '/wo/es/hin/soll/A/'], [qr/(kx[0-9]{5})/i, '/wo/es/hin/soll/B/'], [qr/(kx[0-9]{4})/i, '/wo/es/hin/soll/C/'], [qr/(^00[0-9]{4}\D)/, '/wo/es/hin/soll/D/'], [qr/(\D00[0-9]{4}\D)/, '/wo/es/hin/soll/E/'], [qr/((\D|^)\d{1,6}\D)/, '/wo/es/hin/soll/F/'], ); my $quelle='/wo/die/dateien/sind/'; my @file_names; # ... for my $fname (@file_names) { for my $paar (@aktionen) { my ($regex,$ziel)=@$paar; if($fname =~ $regex) { verschiebe($fname, $quelle, $ziel); last; } } } # -------------------------------------------------- sub verschiebe { my ($file,$quelle,$ziel)=@_; File::Copy::move($quelle.$file,$ziel.$file); } So kannst du die einzelnen Aktionen leicht ergänzen und verschieben. Das ist ein AoA (Array of Arrays) in dem zuerst die Regex und dann das Verzeichnis wohin verschoben werden soll. Die verschachtelten For-Schleifen arbeiten sich durch die Liste der Dateinamen und prüfen für jede ob die Regexp erfüllt ist. Wenn dem so ist wird verschoben und mit der nächsten Datei weiter gemacht. |