Dateien umbenennen (Name mit Leerz.)

B

baju

Jungspund
Ich möchte alle Dateien eines Ordners umbenennen, und zwar soll
- vorn dran der Tag und _, zB "25_"
- ans Ende der Typ ".png"
Das sollte folgendes Scriptteil erledigen: (bin/bash)

for file in `ls `
do
neuname=$tag\_$file.png
mv $file $neuname
done

Solange der alte Dateiname nur aus einem Wort besteht, klappt das auch. Bei mehreren Worten (zB "Erwachsene als Zielgruppe" soll "25_Erwachsene als Zielgruppe.png" werden) geht daas nicht.

Was mache ich da falsch?

Gruß Jutta
 
Hi!

Die Anführungszeichen sind hier wichtig! "Erwachsene als Zielgruppe.png" so müssen die Leerzeichen nicht extra terminiert werden. Also einfach die "$Variablen" in "$Anführungszeichen" setzen.

Gruß
Psyjo
 
Danke erst mal für die Antwort.
Ich habe alle möglichen Varianten ausprobiert, aber ohne Erfolg
for file in `ls `
do
neuname=$tag\_$file.png
echo $neuname
mv "$file" $neuname
done

Der neue Name wird richtig erzeugt, aber das mv funzt nicht!


Gruß Jutta
 
Das Problem beginnt bereits bei der for Schleife, denn nach der Comand-Substitution steht dort dann sowas wie:
Code:
for file in datei2.avi datei mit leerzeichen.avi datei3.avi; do 
  # foo
done
Dafür gibt es read, in Verbindung mit while-Schleife:
Code:
ls|while read file; do
   # foo
done
Und immer schön alle Variablen in double-quotes packen, grade wenn du weißt, dass du mit Dateinamen, die Leerzeichen enthalten arbeitest...
 

Ähnliche Themen

Prblem mit zeilenweises auslesen von Datei und schreiben nach mysql

skript zum löschen doppelter dateien

Problem mit HSPA+ Modem Huawei E353 - Installation unmöglich?

[Suche] - Hilfe bei der Überarbeitung eines bash-Scripts

tar network backup problem

Zurück
Oben