• Willkommen im Linux Club - dem deutschsprachigen Supportforum für GNU/Linux. Registriere dich kostenlos, um alle Inhalte zu sehen und Fragen zu stellen.

Leicht alle Endungen groß schreiben

Hallo Leute,
ich hätte da ein kleine Problem dass nach einem Shell-Script schreit.

ich habe ein Verzeichniss in dem hundertet von pdf Dateien drinstehen die wie folgt aussehen:
Code:
MUSTER1.PDF
MUSTER2.PDF
MUSTER3.PDF
nun sollen die Endungen in .pdf gewandelt werden ohne, dass der Dateiname verändert wird.
Mein Ziel ist daher
Code:
MUSTER1.pdf
MUSTER2.pdf
MUSTER3.pdf


Ich habe bereits einige Befehle versucht aber keiner hat mir ein entsprechendes Ergebniss geliefert.
Bereits versuchte Befehle:
awk {'print tolower($_)'}
tr [:upper:] [:lower:]

Meiner Meinung nach wäre der awk am besten geeignet, da man dort als Tenner den Punkt angeben könnte und somit nur die Endung $2 verarbeiten kann.
Leider sind meine Kenntnisse in awk eher Bescheiden.
Vielleicht habt ihr noch andere Ideen oder Lösungen
mfg Christian
 

admine

Ultimate Guru
So in dieser Richtung:

Code:
ls | awk -F. '{print "mv "$2" "tolower($2)}' | sh
im Verzeichnis der Files ausführen, weil es nicht rekursiv arbeitet.
(ungetestet!)
 
Ja genau in der Richtung. der AWK Befehl ist von Ansatz her super aber er funktioniert noch nicht richtig es kommt folgende Fehlermeldung:
Code:
mv: Aufruf von stat für „PDF“ nicht möglich: Datei oder Verzeichnis nicht gefunden

aber ich werde mal versuchen den awk befehl erfolgreich zu editieren.
 
A

Anonymous

Gast
oder ganz einfach
Code:
for i in *.PDF
do
  mv $i ${i:PDF}pdf
done

robi
 

admine

Ultimate Guru
Geier0815 schrieb:
Ich hab mir grad mal ein paar TestFiles angelegt.
Mit "mmv" bekomm ich das als Fehler:
Code:
ls | awk -F. '{print "mmv "$2" "tolower($2)}' | sh
PDF -> pdf : no match.
Nothing done.
PDF -> pdf : no match.
Nothing done.
PDF -> pdf : no match.
Nothing done.
PDF -> pdf : no match.
Nothing done.

Mein "mv" geht auch nicht ... Fehler, wie o.g.
"rename" :???: hm ... sag mal wie du das machen willst?

Ich forsche auch noch bissel weiter.
;)
 

admine

Ultimate Guru
Lösungsvorschlag (getestet!):
Code:
for a in * ; do mv $a $(echo $a | sed 's/PDF/pdf/g') ; done
im Verzeichnis der Files ausführen.

Ups ... das hatte ja robi schon in etwa :eek:ps:
 
Oben