Archiv verlassen und diese Seite im Standarddesign anzeigen : Skript zum konvertieren und umbenennen von Dateien
hallo gemeinde,
ich möchte verzeichnisweise *.bmp-files in *.png-files convertieren, dazu habe ich ein kleines skript gebastelt, welches mittels der imlib die graphik-convertierung vornimmt, leider komme ich jedoch mit der umbenennung von *.bmp in *.png nicht zurecht...
aufruf:
myconvert bmp png
for OLDNAME in `ls *.${1}`
# Hier brauche ich hilfe, wie ersetze ich die endungen? sed?
NEWNAME = ${OLDNAME} - ${1} + ${2}
convert ${OLDNAME} PNG:${NEWNAME}
next
kann mir bitte jemand helfen?
dankeschön,
Tosk
hossa,
kaum gepostet, schon durch zufall selbst gefunden (heuristic verblüfft mich immer wieder http://www.linuxforen.de/ubb/wink.gif)...
nur, falls es noch jemanden sonst interessiert:
for OLDNAME in `ls ./*.${1}`
do
BASE=`basename ${OLDNAME} ${1}`
NEWNAME=${BASE}${2}
echo "Convertiere " ${OLDNAME} " zu " ${NEWNAME}
convert -compress BZip -normalize ${OLDNAME} ${NEWNAME}
done
schönen tag noch,
Tosk
Versuche mal
<code>NEWNAME = $(echo $OLDNAME | sed 's/\.bmp/\.png/')</code>
Eine Beschreibung zum "sed" gibts u.a. in der <a href="http://www.linuxfibel.de/linux/linuxfibel/sed.htm" target="_blank">Linuxfibel</a>.
Thomas
blackbird
19-06-2000, 16:53
hi tosk!
wenns eh verzeichnisweise gehn soll, machs doch mit ner for-schleife.
so in der art:
<pre>for i in *.bmp
do
convert i.bmp i.png
next</pre>
allerdings nimmt die schleife die endungen in i auchnoch mit.. es gab aber auch ne möglichkeit dass das nicht passiert. ich dachte ich hätte das in meinen scripts noch drinnen, aber ist leider bei ner änderung verloren gegangen http://www.linuxforen.de/ubb/frown.gif
vielleicht bringt die die idee ja n bissl weiter...
grüsse blackbird
PS: das kommt dabei raus wenn man ein posting beginnt, dann schnell kuchen isst und dann weiterschreibt, dann ist alles schon gelöst und ich habs nicht mitbekommen..
was solls http://www.linuxforen.de/ubb/wink.gif
[Dieser Beitrag wurde von blackbird am 19. Juni 2000 editiert.]
Hallo!
Wenn du es z.B. immer nur mit Bash laufen läßt, kannst du es auch wie folgt machen...
for f in $*;
do
DirName=${f%/*}
BaseName=${f##*/}
BaseName=${BaseName%.*}
Ext=${f##*${BaseName}}
cp -v $f ${DirName}${BaseName}.png
# oder auch so...
# cp -v ${DirName}${BaseName}${Ext} ${DirName}${BaseName}.png
done
Dabei bedeutet $* die Dateinamen die per Parameter an das Script übergeben wurden (da die Shell dies ja auflöst, kann dies auch mit Wildcards geschehen, z.B. scriptname *.bmp).
$DirName, $BaseName und $Ext sollten ja selbsterklärend sein.
Aber Achtung! Wenn keine Verzeichnisname vorhanden ist, enthält $DirName den kompletten Datei-Namen!!!
Die kann man durch ein einfach if $DirName = $f vergleichen...
Das ganze Spart natürlich den extra Aufruf von externen Tools (sed oder basename), weil es alles über Bash und die Shell-Variablen läuft. http://www.linuxforen.de/ubb/smile.gif
Gruss
Robert
[Dieser Beitrag wurde von robert am 20. Juni 2000 editiert.]
Powered by vBulletin® Version 4.2.5 Copyright ©2024 Adduco Digital e.K. und vBulletin Solutions, Inc. Alle Rechte vorbehalten.