EasyLinux - Medialinx Shop
EasyLinux - Medialinx Shop
EasyLinux - Medialinx Shop
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
Automatisieren<br />
Workshop<br />
Alle Befehle zusammengefasst und mit einer<br />
For-Schleife versehen, die einen ganzen Ordner<br />
voller Dateien auf geeignete Unterordner<br />
aufteilt, finden Sie in Listing 1; dort gibt es zusätzlich<br />
noch eine Abfrage (if ...), die dafür<br />
sorgt, dass nur wirklich vorhandene Dateinamen<br />
bearbeitet werden. Wenn Sie die Code-<br />
Zeilen in eine Datei namens script.sh schreiben,<br />
können Sie diese mit<br />
. script.sh<br />
Abb. 3: Das ist das Wunschergebnis: Die Dokumente liegen jetzt nach Jahren und Monaten<br />
getrennt in separaten Ordnern und haben besser sortierbare Namen.<br />
Ausdrücke versteht. Alle Befehle arbeiten<br />
ähnlich und entnehmen dem Dateinamen die<br />
fünf Teilausdrücke. Wenn also in $NAME<br />
anfangs der Wert Brief-Finanzamt-17.3.2012-<br />
Kopie.odt steht, dann gilt nach dem Ausführen<br />
der Befehle:<br />
$ echo $VORNE; echo $TAG; echo $U<br />
MONAT; echo $JAHR; echo $HINTEN<br />
Brief‐Finanzamt<br />
17<br />
3<br />
2012<br />
Kopie.odt<br />
(Die echo-Kommandos geben<br />
die Inhalte der Variablen<br />
aus.) Die letzten beiden Befehle<br />
(mit test) dienen nur<br />
dazu, Tag und Monat mit einer<br />
führenden Null zu versehen,<br />
falls diese Zahlen einstellig<br />
(zwischen 1 und 9)<br />
sind; dazu prüft test, ob der<br />
Inhalt der Shell-Variablen<br />
$TAG bzw. $MONAT kleiner<br />
oder gleich 9 (englisch: less<br />
or equal, ‐le) ist.<br />
Nun ist der Dateiname (der<br />
in der Variablen $NAME<br />
steht) in seine Bestandteile<br />
zerlegt, und diese kann<br />
man nach Bedarf verwenden,<br />
um daraus Verzeichnis-<br />
oder neue Dateinamen<br />
zu erstellen. Ist das Ziel<br />
wieder, die Dokumente in<br />
Unterordner der Form JJJJ/<br />
MM zu verteilen und dabei<br />
noch umzubenennen,<br />
könnten sich z. B. die folgenden<br />
Befehle anschließen:<br />
mkdir ‐p $JAHR/$MONAT<br />
mv "$NAME" "$JAHR/$MONAT/$JAHR‐$U<br />
MONAT‐$TAG‐$VORNE‐$HINTEN"<br />
Damit würde die Datei Brief-Finanzamt-<br />
17.3.2012-Kopie.odt in 2012-03-17-Brief-Finanzamt-Kopie.odt<br />
umbenannt und in den<br />
Ordner 2012/03/ verschoben. Die Anführungszeichen<br />
sind wieder notwendig, damit<br />
Dateinamen mit Leerzeichen keine Probleme<br />
verursachen.<br />
(mit einem Punkt und einem Leerzeichen am<br />
Anfang des Befehls) ausführen, und alle Dateien<br />
landen am gewünschten Ort. Zusätzlich<br />
gibt das Skript zu jeder bearbeiteten Datei mit<br />
echo aus, was es getan hat. Die Muster im Listing<br />
wurden gegenüber der Darstellung im<br />
Text noch leicht verändert, so dass es auch<br />
mit Dateinamen funktioniert, bei denen auf<br />
das Datum direkt die Dateiendung folgt.<br />
Die Abbildungen 2 und 3 zeigen ein Beispielszenario<br />
mit acht Dokumenten, die zunächst<br />
alle im Ordner Dokumente liegen und<br />
nach dem Ausführen des Skripts in Unterverzeichnissen<br />
von 2011 und 2012 landen.<br />
Scannerkontrast<br />
Zum Abschluss noch ein einfacheres Beispiel<br />
aus dem Bereich der Bildbearbeitung:<br />
Wenn Sie gelegentlich unter Linux Dokumente<br />
einscannen, haben Sie vielleicht auch<br />
Abb. 4: Spezialisierte Anwendungen, wie die Foto-Batch-Verarbeitung Phatch, helfen auch beim Automatisieren<br />
eintöniger Aufgaben, sind aber auf den jeweiligen konkreten Zweck eingeschränkt.<br />
<strong>EasyLinux</strong><br />
04/2012<br />
www.easylinux.de<br />
73