Massen konvertieren

Hier können sich Zauberer, Magier, Hexen und alle Anderen entspannen und über das Leben, das Universum und den ganzen Rest reden.

Es wird um die Einhaltung der Regeln gebeten

Massen konvertieren

Beitragvon AndieY » Feb 20th, '13, 22:28

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?
AndieY
 
Beiträge: 83
Registriert: Jul 25th, '11, 18:05

Re: Massen konvertieren

Beitragvon wanne » Feb 20th, '13, 22:44

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.)
Zuletzt geändert von wanne am Feb 20th, '13, 23:21, insgesamt 1-mal geändert.
a1d0c6e83f027327d8461063f4ac58a6
wanne
 
Beiträge: 985
Registriert: Jun 1st, '11, 16:54
Wohnort: Südwest-Deutschland

Re: Massen konvertieren

Beitragvon alf » Feb 20th, '13, 22:50

Wie man das mit convert macht? wahrscheinlich mit einem kleinen Script. Aber digikam beherrscht auch Stapelverabeitung und meistert diese Problem ohne Probleme. :D
Das Gehirn ist nicht wie Seife, es wird nicht weniger wenn es benutzt wird. -- Lisa Fitz
Benutzeravatar
alf
 
Beiträge: 2442
Registriert: Jun 1st, '11, 13:39
Wohnort: Paderborn

Re: Massen konvertieren

Beitragvon lula » Feb 20th, '13, 23:25

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
lula
 
Beiträge: 644
Registriert: Feb 10th, '12, 20:13

Re: Massen konvertieren

Beitragvon wanne » Feb 21st, '13, 00:08

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
a1d0c6e83f027327d8461063f4ac58a6
wanne
 
Beiträge: 985
Registriert: Jun 1st, '11, 16:54
Wohnort: Südwest-Deutschland

Re: Massen konvertieren

Beitragvon lula » Feb 21st, '13, 00:24

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
lula
 
Beiträge: 644
Registriert: Feb 10th, '12, 20:13

Re: Massen konvertieren

Beitragvon wanne » Feb 21st, '13, 00:42

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.
a1d0c6e83f027327d8461063f4ac58a6
wanne
 
Beiträge: 985
Registriert: Jun 1st, '11, 16:54
Wohnort: Südwest-Deutschland

Re: Massen konvertieren

Beitragvon lula » Feb 21st, '13, 01:10

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
lula
 
Beiträge: 644
Registriert: Feb 10th, '12, 20:13

Re: Massen konvertieren

Beitragvon alf » Feb 21st, '13, 14:00

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.
Das Gehirn ist nicht wie Seife, es wird nicht weniger wenn es benutzt wird. -- Lisa Fitz
Benutzeravatar
alf
 
Beiträge: 2442
Registriert: Jun 1st, '11, 13:39
Wohnort: Paderborn

Re: Massen konvertieren

Beitragvon Pitti » Feb 21st, '13, 14:47

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.
Klug zu fragen ist schwieriger, als klug zu antworten. (persisches Sprichwort)
Benutzeravatar
Pitti
 
Beiträge: 1224
Registriert: Jun 1st, '11, 10:07
Wohnort: Dresden

Re: Massen konvertieren

Beitragvon doktor5000 » Feb 21st, '13, 15:12

@Pitti: Warum einfach, wenn mans auch kompliziert haben kann ... :/
Ich bin nicht böse, sondern nur ehrlich. Und wer lesen kann, ist klar im Vorteil.
----
Mageia - the magic continues
Benutzeravatar
doktor5000
 
Beiträge: 6055
Registriert: Jun 2nd, '11, 09:39

Re: Massen konvertieren

Beitragvon AndieY » Feb 21st, '13, 17:19

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
AndieY
 
Beiträge: 83
Registriert: Jul 25th, '11, 18:05

Re: Massen konvertieren

Beitragvon wanne » Feb 21st, '13, 19:54

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.
a1d0c6e83f027327d8461063f4ac58a6
wanne
 
Beiträge: 985
Registriert: Jun 1st, '11, 16:54
Wohnort: Südwest-Deutschland


Zurück zu Magischer Zirkel (aka Sandkasten)

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 0 Gäste