Ich arbeite an einer Windows-Maschine und ich habe ein Verzeichnis mit ~ 200k Dateien gefüllt, die ich organisieren muss. Dies ist ein Job, den ich regelmäßig mit verschiedenen Dateinamensets machen muss, aber mit ähnlichen Mustern, so dass Perl ein gutes Tool zu sein scheint.Dateiorganisation in Windows mit Perl
Jeder Dateiname aus {einem String A} gemacht wird {2 oder 3-stellige Nummer B} {einzelne Buchstaben "r" oder "x"} {3-stellige Nummer} .extension
Ich mag ein erstellen Ordner für jede Saite A
in jedem Ordner möchte ich einen Unterordner für jedes B
ich möchte dann jede Datei in die entsprechenden Unterordner verschieben
So wird es am Ende aussehen so etwas wie
/CustomerA/1
/CustomerA/2
/CustomerA/3
/CustomerB/1
/CustomerB/2
/CustomerB/3
etc mit den Dateien in jedem Unterordner
so CustomerA888x123.xml in bewegt wird/CustomerA/888/
ich die Liste der Dateien in einem Array haben, aber ich habe Schwierigkeiten mit der Aufspaltung Dateiname zu seinen Bestandteilen und verwenden Sie die Teile effektiv.
Danke für die Antwort. Ich landete mit auf den Punkt:
#!usr/bin/perl
use warnings;
use strict;
use File::Copy qw(move);
use File::Path qw(make_path);
opendir my $dir, ".";
my @files = readdir($dir);
closedir $dir;
foreach my $file (@files) {
my ($cust, $num) = $file =~ m/(\D+)(\d+)/;
my $dirname = "$cust/$num";
my @dirs_made = make_path($dirname, { verbose => 1 });
move($file, $dirname) or warn "cant move $file to $dirname: $!";
}
Sie müssen das Programm, das Sie ausprobiert haben, zeigen, bevor wir Ihnen helfen können, es zu beheben – Borodin
Ich habe den Code in Ihrer Frage bearbeitet, um einige Einrückungen und Leerzeilen zur besseren Lesbarkeit hinzuzufügen. Wenn Ihnen das nicht gefällt, rollen Sie es bitte zurück - klicken Sie auf "_edited ..._" (über dem Benutzernamen) und dann auf "_rollback_" unter der vorherigen Version. – zdim
das ist toll, danke. Es gibt Leerzeilen und eine größere Einrückung in dem Code, den ich geschrieben habe, aber als ich es als Kommentar eingefügt habe, ist die Formatierung ein bisschen birnenförmig geworden, also habe ich leere Zeilen gelöscht, weil ich dachte, dass das die Formatierungsprobleme verursacht. Nochmals vielen Dank. – Steve