Seite 1 von 1

Massen konvertieren

BeitragVerfasst: Feb 20th, '13, 22:28
von AndieY
Hallo Forum,
hab hier kein Mageia explizites Problem ich hoffe ihr duldet mich trotzdem hier und habt eine Antwort für mich.

Hab hier ein Verzeichnis mit Bildern (keine Ahnung wieviel Hundert das sind) welche ich von bmp nach png konvertieren soll. Nun ist das Werkzeug meiner Wahl Convert und mit
Code: Alles auswählen
convert *.bmp */neues/Verzeichnis/*.png
kann ich auch schon konvertieren, nur wie bringe ich convert bei das es dann auch die Orginal-Namen verwendet und mir nicht einfach stur die Bilder durch nummeriert?

Re: Massen konvertieren

BeitragVerfasst: Feb 20th, '13, 22:44
von wanne
Code: Alles auswählen
find . -name "*.bmp" -exec convert {} /neues/Verzeichnis/{}.png \;

Edit schöner, da nicht rekursiv und weil es die alte Dateiendung entfernt:
Code: Alles auswählen
for f in $(ls *.bmp); do convert $f $(echo "neues/Verzeichnis/${f}.png"| cut -d "." -f 1,3); done

Ist ein bisschen hässlich zusammengestückelt. bestimmt kommt gleich einer mit nem schönen awk befehl oder so.
Hier mal die erklärung:
Ich speichere alles was ls *.bmp ausgibt in $f darauf fürhe ich dan convert nach echo "neues/Verzeichnis/${f}.png"| cut -d "." -f 1,3 aus. Das hängt an den Dateinamen vorne neues/Verzeichnis/ und hinten .png dran unterteilt das dann nach Punkten und nimmt nur den ersten und 3. Teil (=> alles außer der alten Dateiendung.)

Re: Massen konvertieren

BeitragVerfasst: Feb 20th, '13, 22:50
von alf
Wie man das mit convert macht? wahrscheinlich mit einem kleinen Script. Aber digikam beherrscht auch Stapelverabeitung und meistert diese Problem ohne Probleme. :D

Re: Massen konvertieren

BeitragVerfasst: Feb 20th, '13, 23:25
von lula
Hallo,
hier die von alf angedeutete Skript-Variante:
Code: Alles auswählen
for i in *.bmp; do new=$(basename $i .bmp); convert $i /neues/Verzeichnis/$new.png; done

Grüße,
Lutz

Re: Massen konvertieren

BeitragVerfasst: Feb 21st, '13, 00:08
von wanne
man kanns auch so machen:
Code: Alles auswählen
ls -1 *.bmp | awk -F. '{printf "convert %s.bmp neues/Verzeichnis/%s.png\n",$1,$1}' | bash

Das ist etwas übersichtlicher weil iterativ. Aber schön wird's einfach nicht. Das abscheiden der Endung wird einfach nicht schön. Vor allem gehen beide befehle davonaus das die Dateinamen keine Punkte haben. mit wirds noch hässlicher:
Code: Alles auswählen
ls -1 *.bmp | awk '{printf "convert %s neues/Verzeichnis/%s\n",$1,$1}' | sed s/\.bmp$/.png/g | bash

@lula war mit editiren 4min schneller als du mit posten :-)
Wobei man wenn man beide zusammensteckt einen kürzeren bekommt:
Code: Alles auswählen
for i in *.bmp; do convert $i neues/Verzeichnis/$(basename $i .bmp).png; done

Re: Massen konvertieren

BeitragVerfasst: Feb 21st, '13, 00:24
von lula
Hallo,
wanne hat geschrieben: Aber schön wird's einfach nicht. Das abscheiden der Endung wird einfach nicht schön. Vor allem gehen beide befehle davonaus das die Dateinamen keine Punkte haben.

Viel schlimmer wird's noch, wenn außer Punkten noch Leerzeichen und anderer Unsinn hinzukommen. Deine erste Variante fand ich eigentlich am besten, allerdings würde ich es noch etwas erweitern, um Leerzeichen abzufangen. Deinem Einwand der Rekursion kann man mit maxdepth entgegen wirken. Daraus wird dann:
Code: Alles auswählen
find . -maxdepth 1 -type f -name "*.bmp" -print0 | xargs -0 -I xx convert xx /neues/Verzeichnis/xx.png

Das hat natürlich den Nachteil, daß aus Datei.bmp /neues/Verzeichnis/Datei.bmp.png wird. Das kann man dann aber in einem zweiten Schritt mit rename relativ einfach wieder glattziehen:
Code: Alles auswählen
cd /neues/Verzeichnis/; rename .bmp.png .png *.png


Grüße,
Lutz

Re: Massen konvertieren

BeitragVerfasst: Feb 21st, '13, 00:42
von wanne
Du machst dir das leben viel zu schwer find ist inteligent genug Argumente richtig zu übergeben. Keine shell keine Probleme mit "' oder leerzeichen. Wenn das schön alles im Programm passiert wird einfach mit dem String als Argument aufgerufen.
Folgendes funktioniert selbstversändlich auch mit Sonderzeichen (Das haben die in der Manpage wohl auch nicht so richtig geblickt. Ich sehe kein Grund, warum man das {} in tics setzen soll.))
Achso und ob man -type f braucht... Wer einen Ordner auf .bmp enden lässt soll sich auch an der Fehlermeldung dass convert keine Ordner konvertieren kann nicht stören. (Das find arbeitet ja trotzdem weiter.)
Code: Alles auswählen
find . -maxdepth 1 -name "*.bmp" -exec convert {} neues/Verzeichnis/{}.png \;

Leider kann man da eben auch nicht mehr an der dateiendung rumspielen. Der String hängt da unveränderlich drin.

Re: Massen konvertieren

BeitragVerfasst: Feb 21st, '13, 01:10
von lula
Hallo,
wanne hat geschrieben:Du machst dir das leben viel zu schwer

Das mag sein, ist aber auch eine Angewohnheit, genau so wie die Einschränkung z.B. auf Dateien, m.E je genauer desto besser.
wanne hat geschrieben:Wer einen Ordner auf .bmp enden lässt...
Alles schon gesehen... Ich gehe einfach davon aus, daß find schneller ist, wenn man die Suchkriterien genauer definiert. Das Programme mit Leer-/Sonderzeichen umgehen können ist lt. manpage auch nicht unbedingt gesichert. In diesem Fall hast Du aber sicherlich recht.

Grüße,
Lutz

Re: Massen konvertieren

BeitragVerfasst: Feb 21st, '13, 14:00
von alf
Ich habe gerade mal ein wenig in den Softwarequellen gestöbert, da gibt's ein recht brauchbares tool(sogar mit gui) für solche Aufgaben: ffmulticonverter. Der kann Audio, Video, Bilder und Dokumente. Die Namen bleiben selbstverständlich erhalten. Wenn's also nicht um das akademische Interesse geht kann man sich das scripten sparen.

Re: Massen konvertieren

BeitragVerfasst: Feb 21st, '13, 14:47
von Pitti
Den Bildbetrachter Gwenview starten -> dort den Ordner mit den Bilder auswählen,
dann "Module -> Stapelverarbeitung -> Bilderkonvertierung"
dort das Format auswählen und nach Klick auf "Hinzufügen" mit <Strg+A> alle Dateien markieren geht auch.

Re: Massen konvertieren

BeitragVerfasst: Feb 21st, '13, 15:12
von doktor5000
@Pitti: Warum einfach, wenn mans auch kompliziert haben kann ... :/

Re: Massen konvertieren

BeitragVerfasst: Feb 21st, '13, 17:19
von AndieY
Pitti hat geschrieben:Den Bildbetrachter Gwenview starten -> dort den Ordner mit den Bilder auswählen,
dann "Module -> Stapelverarbeitung -> Bilderkonvertierung"
dort das Format auswählen und nach Klick auf "Hinzufügen" mit <Strg+A> alle Dateien markieren geht auch.
:oops: Erwischt mir war gar nicht bewusst das Gwenview das kann oder vielleicht lag es auch daran das die Kipi-Plugins nicht installiert waren.

Somit kann diese Thread hier als gelöst markiert werden, ich Danke für die Aufmerksamkeit

Re: Massen konvertieren

BeitragVerfasst: Feb 21st, '13, 19:54
von wanne
ich finde das das im allgemeinen oft fehlt: man will einen Befehl auf jede Datei in einem Verzeichnis ausführen. Das geht nur mit der hässlichen for schleife oder find.