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

thorben
 2011-02-09 15:07
#145519 #145519
User since
2011-02-08
3 Artikel
BenutzerIn
[default_avatar]
Ich habe mich da bestimmt etwas verquer ausgedrückt. (Ich bekomme auch Dein Ergebnis). Ich bräuchte aber:

Keep: TestB_001a.txt TestA_002a.txt TestA_002b.txt
Delete: TestA_001a.txt TestA_001b.txt

D.h. es sollen bei TestA alle Dateien gelöscht werden, die als Counter 1 haben. Ich habe es jetzt wie unten gelöst. Problem ist jetzt nur noch, dass die Dateien nicht löschen kann. (unlink,Überprüfung Benutzerrechte und Dateinamen als Text habe ich schon probiert).Hättest Du da evt. noch eine Idee? (Fehlermeldung: Can't delete TestA_001*.txt - No such file or directory)

Code: (dl )
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
for my $name ( keys %files ) {
[b]my $stern = '*';[/b]

# 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$stern.txt";

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

foreach $file (@to_delete) {
unlink ($file) or die "Can't delete $file - $!";
}


Vielen Dank schon mal!

Editiert von thorben: Fehlermeldung unlink eingefügt
Last edited: 2011-02-09 15:09:53 +0100 (CET)

View full thread höchste dateinamen verzeichnis