Anzeige:
Ergebnis 1 bis 5 von 5

Thema: Skript zum konvertieren und umbenennen von Dateien

  1. #1
    Tosk
    Gast

    Question 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

    Code:
    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

  2. #2
    Tosk
    Gast

    Cool

    hossa,

    kaum gepostet, schon durch zufall selbst gefunden (heuristic verblüfft mich immer wieder )...

    nur, falls es noch jemanden sonst interessiert:

    Code:
    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

  3. #3
    Registrierter Benutzer
    Registriert seit
    19.10.1999
    Ort
    Dresden
    Beiträge
    255

    Post

    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

  4. #4
    blackbird
    Gast

    Post

    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
    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

    [Dieser Beitrag wurde von blackbird am 19. Juni 2000 editiert.]

  5. #5
    Registrierter Benutzer
    Registriert seit
    13.04.1999
    Ort
    Rheinstetten
    Beiträge
    122

    Cool

    Hallo!

    Wenn du es z.B. immer nur mit Bash laufen läßt, kannst du es auch wie folgt machen...

    Code:
    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.

    Gruss

    Robert

    [Dieser Beitrag wurde von robert am 20. Juni 2000 editiert.]

Lesezeichen

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •