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

    Schau dir mal diese Kategorie an. Dort findest du bestimmt etwas.
    Registrieren bzw. einloggen, um diese und auch andere Anzeigen zu deaktivieren
  3. #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. 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...
  2. 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...
  3. Linux "vergisst" Dateisystem?

    Linux "vergisst" Dateisystem?: Hallo zusammen! Aufgrund des von mir hier beschriebenen Problems habe ich nun die halbe Nacht "durchgearbeitet", da ein komplett neues Konzept...
  4. 2 Spalten in EINER Textdatei GETRENNT addieren

    2 Spalten in EINER Textdatei GETRENNT addieren: Hey, bin ein ziemlicher Neuling in Sachen programmieren. Nun steh ich vor dem Problem, dass ich 2 Zahlenspalten inner Textdatei (vim) getrennt...
  5. User sollen Dateien speichern und ändern, aber nicht neu anlegen dürfen

    User sollen Dateien speichern und ändern, aber nicht neu anlegen dürfen: Hallo liebe Helfer, welche Einstellungen muss ich in der smb.conf bzw. unter Linux vornehmen, damit User vorhandene Dateien öffnen und speichern...