Thread höchste dateinamen verzeichnis (7 answers)
Opened by thorben at 2011-02-08 16:45

renee
 2011-02-08 16:56
#145485 #145485
User since
2003-08-04
14371 Artikel
ModeratorIn
[Homepage] [default_avatar]
ungetestet
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
35
36
37
38
my $dir = '/path/to/dir';

my %files;
my @keep;
my @to_delete;

opendir my $dir_h, $dir or die "Can't open directory $dir: $!";
while ( my $entry = readdir $dir_h ) {

    # hole den namen und den "counter"
    my ($name,$counter) =~ $entry =~ m{ (.*?) ([a-z]) \.txt }x;

    # wenn es keine Datei mit dem Muster ist, mache einfach mit
    # der nächsten Datei weiter
    next if !($name and $counter);

    # speichere den namen und das "zählkürzel"
    # $files->{TestA002}->{a} = 1
    $files{$name}->{$counter} = 1;
}
closedir $dirh;

# laufe über die Namen (z.B. TestA001, TestA002, ...)
for my $name ( keys %files ) {

    # sortiere die "zählkürzel" absteigend. Das "höchste" wird in
    # $keep gespeichert, der Rest in @delete
    my ($keep,@delete) = sort{ $b cmp $a }keys %{ $files{$name} };

    # setze den Dateinamen wieder zusammen und speichere es in @keep
    push @keep, "$name$keep.txt";

    # für jedes andere Zählkürzel wird der Dateiname zusammengesetzt und
    # in @to_delete gespeichert.
    push @to_delete, map{ "$name$_.txt" }@delete;
}

print "Keep: @keep\nDelete: @to_delete\n";


Editiert von renee: Einige Kommentare hinzugefügt
Last edited: 2011-02-08 16:59:19 +0100 (CET)
OTRS-Erweiterungen (http://feature-addons.de/)
Frankfurt Perlmongers (http://frankfurt.pm/)
--

Unterlagen OTRS-Workshop 2012: http://otrs.perl-services.de/workshop.html
Perl-Entwicklung: http://perl-services.de/

View full thread höchste dateinamen verzeichnis