Dateiextension von Großbuchstaben in Kleinbuchstaben

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Benutzeravatar
bifo
Beiträge: 335
Registriert: 10.07.2002 07:22:39
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Monschau

Dateiextension von Großbuchstaben in Kleinbuchstaben

Beitrag von bifo » 01.09.2005 20:44:36

Hallo zusammen,

hier mal eine kleine Denksportaufgabe, an der ich gerade verzweifle weil ich wohl offensichtlich blind bin... :cry:

Ich habe mehrere Verzeichnisse von Jpeg-Dateien mit JPG als Extension. Die Extension möchte ich nun in Kleinbuchstaben umsetzen. Da das aber mehrere hundert Dateien sind, wirds per Hand etwas lange dauern... :?

Hier mein Ansatz:

Das Skript soll mit zwei Parametern $1 und $2 aufgerufen werden, damit's für die Zukunft variabel wird.

Code: Alles auswählen

#! /bin/sh

for i in `ls *.$1`
do
        mv $i $i.$2
done
Die Ausgabe des Skriptes könnt Ihr euch Denken: Daraus wird jetzt eine Liste mit Dateiname.JPG.jpg :roll:

Das Problem ist also, daß ich irgendwie den String "JPG" wegwerfen muß. Ich habe es vorhin schon mit cut (1) versucht. Dabei bin ich vor die Wand gelaufen, daß cut einen Dateinamen haben will...

Irgendwie habe ich ein Brett vom handlichen Format einer Eisenbahnschwelle vor dem Kopf. Kann mir jemand weiterhelfen?

Besten Dank schonmal im Voraus
Gruß
Uwe

gms
Beiträge: 7798
Registriert: 26.11.2004 20:08:38
Lizenz eigener Beiträge: MIT Lizenz

Re: Dateiextension von Großbuchstaben in Kleinbuchstaben

Beitrag von gms » 01.09.2005 21:11:59

so sollte es funktionieren:

Code: Alles auswählen

#! /bin/sh

for i in `ls *.$1`
do
 SHORTNAME=`echo $i | sed -e s/\.$1//i`
  mv $i $SHORTNAME.$2
done
Gruß
gms
Zuletzt geändert von gms am 01.09.2005 21:15:28, insgesamt 1-mal geändert.

Vego
Beiträge: 5
Registriert: 22.01.2005 22:43:14
Wohnort: Berlin
Kontaktdaten:

Beitrag von Vego » 01.09.2005 21:13:20

Wenn /bin/sh nach /bin/bash zeigt (was wohl der fall sein dürfte), würd ich's mal so machen:

Code: Alles auswählen

#! /bin/sh

for i in `ls *.$1`
do
        mv $i ${i%.$1}.$2
done
Der Teil mit dem Prozentzeichen sorgt dafür, dass bei der Ausgabe des Inhalts der Variablen vor dem %-Zeichen das Ende weggelassen wird, wenn dieses mit dem was nach dem % folgt übereinstimmt.
Näheres -> man bash.
Abi 05!

Benutzeravatar
bifo
Beiträge: 335
Registriert: 10.07.2002 07:22:39
Lizenz eigener Beiträge: MIT Lizenz
Wohnort: Monschau

Beitrag von bifo » 01.09.2005 21:28:24

Hallihallo!

*JUBEL* Das ist es. Herzlichen Dank.

Gruß
Uwe :D

Benutzeravatar
Joghurt
Beiträge: 5244
Registriert: 30.01.2003 15:27:31
Wohnort: Hamburg
Kontaktdaten:

Beitrag von Joghurt » 01.09.2005 21:32:58

oder

Code: Alles auswählen

rename "s/.$1/.$2/" *.$1

Benutzeravatar
caramel-baby
Beiträge: 18
Registriert: 28.04.2005 19:38:57

Re: Dateiextension von Großbuchstaben in Kleinbuchstaben

Beitrag von caramel-baby » 02.09.2005 10:11:05

bifo hat geschrieben:Das Problem ist also, daß ich irgendwie den String "JPG" wegwerfen muß.
Für sowas benutze ich gerne basename:

Code: Alles auswählen

> basename test.JPG .JPG
test

Antworten