reguläre Ausdrücke: erst die geraden Zahlen und dann die...

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Maui Muc
Beiträge: 71
Registriert: 17.09.2004 11:10:55

reguläre Ausdrücke: erst die geraden Zahlen und dann die...

Beitrag von Maui Muc » 04.04.2007 22:42:10

Hallo Zusammen,

ich habe folgendes Problem. Heute musste ich in mühsamer Kleinarbeit ein Manual von anno 1982 durch den Scanner jagen. Jetzt liegen 119 PNG Files auf dem Blechonkel mit der Nomenklatur p_XXX.png. Alle Bilder mit ungeraden Seitenzahlen wollen links einen Rand von einen Zentimeter und die mit graden Seitenzahlen einen auf der rechten Seite.

Was ich bisher hinbekommen habe:
einer Dateien links und rechts erst mal 200pix Rand verpassen

Code: Alles auswählen

 convert -border 200x0 -bordercolor "#ffffff" p_XXX.png
und anschließend den entsprechenden Teil heraus scheiden
für gerade:

Code: Alles auswählen

 convert -crop 2640x3404+200+0 p_XXX.png
für ungerade:

Code: Alles auswählen

 convert -crop 2640x3404+0+0 p_XXX.png
Mein Interesse besteht nun darin, der Kiste bei zu bringe allen Bildern die 200pix Rand hinzu zu fügen und dann zwischen geraden und ungeraden Zahlen unterscheide und entsprechend zuschneiden.

Natürlich könnte ich die Dateien auf einen Stick ziehen und das in wenigen Minuten ohne weiter nach zu denken mit IrfanView auf einer Windows-Kiste erledigen. Aber mich hat der Ehrgeiz gepackt.

Besten Dank bereits im Voraus für die Hilfe

Benutzeravatar
Cloonix
Beiträge: 589
Registriert: 20.11.2004 10:42:24
Wohnort: München
Kontaktdaten:

Beitrag von Cloonix » 05.04.2007 01:34:28

Hallo werter Münchner Nachbar.

Mich hat es nun zu später Stunde auch gepackt. Ich bin zwar nicht der beste Shell Skripter, aber ich habe bis jetzt alles hin bekommen. Hier die Lösung für dich:

Befehl für alle Seiten ist noch ganz leicht:

Code: Alles auswählen

for i in `ls`; do convert -border 200x0 -bordercolor "#ffffff" $i; done
Befehl für die ungeraden Seiten:

Code: Alles auswählen

for i in `ls`; do p=`echo $i | cut -c 3-5`; if [ $(($p%2)) -eq 1 ]; then convert -crop 2640x3404+0+0 $i; fi; done
Befehl für die geraden Seiten:

Code: Alles auswählen

for i in `ls`; do p=`echo $i | cut -c 3-5`; if [ $(($p%2)) -eq 0 ]; then convert -crop 2640x3404+200+0 $i; fi; done
Mach vorher eine Sicherung. Aber es funktioinert ;)
proud to be 100% M$ free (except X300T)
http://claus.freakempire.de
http://debian.freakempire.de

Maui Muc
Beiträge: 71
Registriert: 17.09.2004 11:10:55

Beitrag von Maui Muc » 05.04.2007 12:17:17

Hi Cloonix,

besten Dank für deine Hilfe, das hat mir sehr geholfen. Bei mir hat leider der Modulo Operator Schwierigkeiten gemacht. Ich habe es aber dann doch noch hinbekommen indem ich noch einen weiteren Zähler eingeführt habe. Mit diesem neuen Zähler hatte der Modulo Operator keine Probleme.

Was jetzt komme ist zwar off Topic aber vermutlich nur eine Kleinigkeit die ihr mir sicher schnell beantworten könnt. Die PNG-Files sehen nun so aus wie ich sie haben will. Jetzt geht es aber weiter. Alle Dateien sollen maximiert und zentriert auf eine A4 Seite eingepasst werden und als PDF abgespeichert. Nur wie um Himmelswillen geht das auf einem Linux Rechner?

Aus den ca. 5 Windows-Minuten sind jetzt nun schon etliche Stunden geworden aber ich will mich nicht beklagen schließlich lerne ich eine Menge.

Antworten