05.11.2013 Aufrufe

EasyLinux - Medialinx Shop

EasyLinux - Medialinx Shop

EasyLinux - Medialinx Shop

MEHR ANZEIGEN
WENIGER ANZEIGEN

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

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!