Programmiersprachen
LVA 185.208, VL 2.0, 2005 S
3. Übungsaufgabe
Schreiben Sie ein Programm zum Zusammenfassen der Dateien aus mehreren
Ordnern in einen Ordner und zum Umbenennen von Dateien entsprechend
folgenden Bedingungen in Perl, Python oder AWK (oder als Shell-Script, das
Perl, Python oder AWK aufruft):
- Die Dateien in einem Ordner werden umbenannt, indem jedem Dateinamen eine
eindeutige vierstellige Dezimalzahl vorangestellt wird. Beispielsweise werden
die Dateien
a.b
und c.d
in 0000a.b
und 0001c.d
umbenannt. Dabei soll die Zählung mit 0000
beginnen, und Dateien
sollen aufsteigend nach dem Datum und Zeitpunkt ihrer letzten Änderung
sortiert sein. Im Beispiel sollte die letzte Änderung von a.b
länger zurück liegen als die von c.d
.
- Werden Dateien aus mehreren Ordnern in einem Zielordner zusammengefasst,
darf nur der Zielordner verändert werden. Dateien aus anderen Ordnern
werden in den Zielordner kopiert und die Kopien dabei nach demselben Schema
verändert wie die Dateien im Zielordner. Auch wenn Dateien aus mehreren
Ordnern kommen, sollen die den Namen vorangestellten Zahlen immer nach dem
letzten Änderungszeitpunkt (und nicht nach dem Zeitpunkt des kopierens)
sortiert sein.
- Es wird eine Datei Namens
index
angelegt, die für jede Datei
im Zielordner (außer für index
selbst) eine Zeile folgender
Form enthält:
neuer_Dateiname <- alter_Dateiname
Dabei sind alter_Dateiname
und neuer_Dateiname
die Namen der
Dateien vor bzw. nach dem Umbenennen und Kopieren. Wenn Dateien aus anderen
Ordnern kommen, soll alter_Dateiname
zusätzlich den
vollständigen Pfadnamen des Ordners enthalten. Die Einträge in
index
sind aufsteigend nach den Zahlen in den neuen Dateinamen
sortiert.
- Achten Sie darauf, dass beim Umbenennen und Kopieren keine Daten verloren
gehen. Das könnte bei Unachtsamkeit passieren, wenn es beispielsweise
die Dateien
a
und 0001a
gibt und a
in 0001a
bzw.
0001a
in 00000001a
umbenannt werden soll.
- Nur Dateien, die keine Ordner sind, werden umbenannt bzw. kopiert. Namen
von Ordnern bleiben unberührt. Dadurch kann es zu Namenskonflikten
kommen. Besteht ein Namenskonflikt mit einem Ordner, so ist eine
Fehlermeldung auszugeben und sonst nichts zu machen.