Programmiersprachen
LVA 185.208, VL 2.0, 2006 S
3. Übungsaufgabe
Schreiben Sie ein Werkzeug zum Verschieben und händischen
Klassifizieren von Dateien in Perl, Python oder AWK (oder als Shell-Script, das
Perl, Python oder AWK aufruft). Das Werkzeug soll auf folgende Weise verwendbar
sein:
- Zu Beginn (beispielsweise beim Aufruf des Werkzeugs) definiert man die
Quellordner, deren enthaltende Dateien verschoben und klassifiziert
werden sollen. Weiters definiert man Zielordner, in die diese Dateien
verschoben werden sollen und assoziiert jeden Zielordner mit einer Ziffer
als Kurznamen (z.B. durchnummeriert von 0 bis 9). Schließlich gibt man
ein Programm an, das für jede zu klassifizierende Datei aufgerufen wird.
Zur Vereinfachung der Verwendung des Werkzeugs kann ein Programm als Default
vorgesehen werden, das dann zur Verwendung kommt, wenn kein anderes Programm
angegeben wird. Das Default-Programm gibt beispielsweise den Anfang einer
Textdatei am Terminal aus.
- Im Allgemeinen wird das angegebene Programm für jede Datei in den
Quellordnern in beliebiger Reihenfolge aufgerufen. Danach erwartet das
Werkzeug vom Benutzer die Eingabe einer Ziffer. Anschließend wird
die Datei in den der Eingabe entsprechenden Zielordner verschoben und das
Programm für die nächste Datei aufgerufen. Es ist zu beachten,
dass das aufgerufene Programm die Datei möglicherweise verändert
und die (veränderte) Datei daher erst nach Beendigung des Programms
verschoben werden soll.
- Wenn es nur einen Zielordner gibt, ist keine Benutzerinteraktion (=
Eingabe des Zielordners für jede Datei) nötig.
- Das Verschieben der Dateien kann zu Namenskonflikten in Zielordnern
führen. In diesem Fall (und nur in diesem) sollen verschobene Dateien
automatisch so umbenannt werden, dass alle Dateinamen in jedem Zielordner
eindeutig sind. Es ist kein fixes Namensschema für umbenannte Dateien
vorgegeben.
- Zielordner und Quellordner können gleich sein. Um dadurch
mögliche Konflikte zu vermeiden soll die Menge der zu verschiebenden
Dateien bereits unmittelbar nach Aufruf des Werkzeugs ermittelt und danach
nicht mehr geändert werden. Während der Ausführung des
Werkzeugs hinzugekommene Dateien bleiben unberücksichtigt. Ebenso ist
darauf zu achten, dass Dateien nicht wegen eines Namenskonflikts umbenannt
werden, wenn die in Konflikt stehende Datei später ohnehin verschoben
wird. Es empfiehlt sich daher die Verwendung eines temporären
Zwischenspeichers.
- Bei Beendigung des Werkzeugs wird ein Protokoll ausgegeben. Darin ist
verzeichnet, welche Datei wohin verschoben und dabei möglicherweise
wie umbenannt wurde. Ebenso sollen hier Konflikte der Art gemeldet werden,
dass eine zu verschiebende Datei zum Zeitpunkt des Verschiebens nicht
existiert hat.
Lösen Sie möglichst viele Teilaufgaben durch Verwendung der von der
Programmiersprache und dem Betriebssystem (inklusive Systemwerkzeugen)
bereitgestellten Resourcen. Je kleiner und einfacher das Werkzeug wird, umso
besser.