Programmiersprachen
LVA 185.208, VL 2.0, 2008 S
3. Übungsaufgabe
Schreiben Sie ein Werkzeug zum händischen Klassifizieren von Dateien in
einer dynamisch typisierten Scripting-Sprache (z.B. Perl, Python, PHP, Ruby,
AWK), eventuell auch unter Zuhilfenahme von Shell-Scripts. Das Werkzeug soll
auf folgende Weise verwendbar sein:
- Zu Beginn (beispielsweise beim Aufruf) definiert man Quellordner und ein
oder mehrere Muster für Dateinamen (z.B.
*.jpg
). Alle Dateien in
diesen Ordnern und in allen Unterordnern davon, deren Namen einem dieser
Muster entsprechen, sollen klassifiziert und (wenn gewünscht) kopiert
werden. Weiters definiert man Zielordner, in die kopierte Dateien kommen
sollen, und assoziiert jeden Zielordner mit einer Ziffer oder einem
Buchstaben als Kurznamen. Schließlich gibt man ein Programm an, das
für jede zu klassifizierende Datei nacheinander aufgerufen wird,
beispielsweise ein Programm zum Betrachten oder Bearbeiten von Bildern wenn
die gewählten Muster zu Bilddateien passen.
- Das angegebene Programm wird für jede passende Datei in den Quellordnern in
beliebiger Reihenfolge aufgerufen. Danach erwartet das Werkzeug vom Benutzer
die Eingabe keiner, einer, oder mehrerer Ziffern und Buchstaben. Die Datei
wird in die der Eingabe entsprechenden Zielordner kopiert. Es ist zu
beachten, dass das aufgerufene Programm die Datei möglicherweise
verändert, und in diesem Fall die veränderte Datei (mit
unverändertem Namen) in die angegebenen Zielordner geschrieben werden
soll.
- Es kann zu Namenskonflikten in Zielordnern kommen. In diesem Fall (und
nur in diesem) sollen Dateien automatisch so umbenannt werden, dass die
Namen eindeutig sind. Es ist kein fixes Namensschema für umbenannte
Dateien vorgegeben; legen Sie selbst eines fest. Wenn zwei Dateien, die mit
demselben Namen in denselben Zielordner kommen sollen, auch denselben
Inhalt haben, dann braucht keine Umbenennung erfolgen; es handelt sich nur
um eine Datei.
- Zielordner und Quellordner können gleich sein. Um dadurch
mögliche Konflikte zu vermeiden, soll die Menge der zu bearbeitenden
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.
- Bei Beendigung des Werkzeugs wird ein Protokoll ausgegeben. Darin ist
verzeichnet, welche Datei verändert, wohin kopiert und wie umbenannt
wurde. Ebenso sollen hier Konflikte der Art gemeldet werden, dass eine zu
bearbeitende Datei zum Zeitpunkt der Bearbeitung nicht existiert hat oder
das ausgeführte Programm mit einem Fehler beendet wurde.
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.