Datei Erweiterungen non-case sensitive umbenennen

Diskutiere Datei Erweiterungen non-case sensitive umbenennen im Shell-Skripte Forum im Bereich Programmieren unter Linux/Unix; einfache frage. ich möchte *.jpg dateien in *.gif dateien umbenennen. dazu benutze ich folgende zuweisung: SOURCE_IMG=${TARGET_IMG%".jpg"}.gif...

  1. #1 ohrobot, 07.06.2009
    ohrobot

    ohrobot Grünschnabel

    Dabei seit:
    20.06.2008
    Beiträge:
    8
    Zustimmungen:
    0
    einfache frage. ich möchte *.jpg dateien in *.gif dateien umbenennen. dazu benutze ich folgende zuweisung:

    SOURCE_IMG=${TARGET_IMG%".jpg"}.gif

    aufgrund der case-sensitivity betrifft dies nun leider ausschließlich nur *.jpg, nicht jedoch *.JPG benannte dateien/erweiterungen. wie müsste ich die zuweisung umschreiben dass *.JPG und *.jpg in *.gif umgewandelt werden? einen tipp?
     
  2. #2 bytepool, 07.06.2009
    Zuletzt bearbeitet: 07.06.2009
    bytepool

    bytepool Code Monkey

    Dabei seit:
    12.07.2003
    Beiträge:
    791
    Zustimmungen:
    0
    Ort:
    /home/sweden/göteborg
    Hi,

    eine wirklich einfache Loesung faellt mir dazu auch nicht ein, weil parameter expansion soweit ich weiss nur case sensitive funktioniert. Das hier waere mein Loesungsvorschlag:

    Code:
    for i in *; do
       # test for case insensitive ending of jpg
       case "$i" in
          *.[Jj][Pp][Gg])
             # count length of i
             count=${#i}
             # calculate position to which you have to expand
             pos=$((count - 3))
    
             # rename file
             echo $i ${i::$pos}gif
             ;;
       esac
    done
    
    Das echo nur noch durch mv ersetzen, und es sollte funktionieren. Wenn durch das case insensitive Ersetzen allerdings mehrere Dateien mit dem gleichen Namen entstehen, verlierst du mindestens eine der Dateien, aber das duerfte ja klar sein.

    Solltest du nicht verstehen was da genau passiert, einfach nochmal nachfragen, dann erklaer ich's dir.

    So richtig elegant und simpel ist das aber irgendwie noch nicht. ;)

    Edit:
    Ach, manchmal bin ich auch doof, das case statement ist natuerlich unnoetig:
    Code:
    for i in *.[Jj][Pp][Gg]; do
       count=${#i}
       pos=$((count - 3))
       echo $i ${i::$pos}gif
    done
    
    Das sieht doch schon wieder ein wenig freundlicher aus. ;)

    mfg,
    bytepool
     
Thema:

Datei Erweiterungen non-case sensitive umbenennen

Die Seite wird geladen...

Datei Erweiterungen non-case sensitive umbenennen - Ähnliche Themen

  1. Dateiinhalt verdoppeln

    Dateiinhalt verdoppeln: Hallo, ich möchte den Inhalt einer Datei verdoppeln, Kopf- und Endesatz ausgenommen. Danach muss im Endesatz die Datensatzanzahl angepasst werden...
  2. Dateien in Unix finden, die mehrere Strings beinhalten

    Dateien in Unix finden, die mehrere Strings beinhalten: Hallo liebe Leute, ich versuche über die Shell unter Unix alle Dateien ausfindig zu machen, die sowohl den SuchstringA als auch den SuchstringB...
  3. Textdatei filtern und löschen mit grep /sed

    Textdatei filtern und löschen mit grep /sed: Guten morgen liebe Forenmitglieder, da ich etliche Jahre in Sachen Linux pausiert habe und nun wegen beruflichem Wechsel wieder dort einsteige...
  4. Fragen zu stty, quotes und Datein (flush)

    Fragen zu stty, quotes und Datein (flush): Hi, ich schreibe seit ein paar Tagen ein Skript, dass über die Serielle Schnittstelle kommuniziert. Leider gibt es noch zwei Probleme, die ich...
  5. NFS durch Symlink auf lokales Dateisystem entlasten

    NFS durch Symlink auf lokales Dateisystem entlasten: Hallo zusammen, ich bin neu hier und auch nicht sicher ob ich mich hier im richtigen Forum befinde... Darum schon mal sorry wenn es eigentlich...