PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Letzten 3 Buchstaben ändern...



Flitschbirne
10-09-2007, 10:58
Hallo.

Ich konvertiere gerade über 150 XML-Dateien über den Command


rrdtool restore datei.xml datei.rrd in RRD-Dateien um.

Dazu hab ich mir mal folgendes Skript leihenweise zusammen gefrickelt:


#!/bin/bash
for i in `ls`; do
rrdtool restore $i $i.rrd
done

Das Problem ist, dass er die Dateien zwar alle umwandelt diese dann aber die Endung ".xml.rrd" haben.

Mit welchem Command kann man aus allen Dateien das ".xml" entfernen?

Ich find bei Google nur Kommentare zum Ändern "innerhalb" von Dateien. Aber nicht die Dateien selbst. Oder geht das irgendwie mit "mv"?

Gruß,
Flitschbirne

jeebee
10-09-2007, 11:49
Zum Beispiel so:
#!/bin/bash
for i in `ls`; do
# sollte das .xml abschneiden.
# Allerdings nur wenn die Dateinamen keinen . enthalten
name=$(echo $i | cut -d'.' -f1)
rrdtool restore $i $name.rrd

Flitschbirne
10-09-2007, 12:46
Super. Dank dir :-)

Nur damit ich es verstehe:


cut -d'.' -f1

nimmt den Punkt als Delimiter und -f1 schneidet dann das xml danach ab???

Flitschbirne

jeebee
10-09-2007, 16:18
cut -d'.' -f1
-d'.' -- wie du gesagt hast, Punkt als Delimiter,
-f1 -- gibt das erste Feld zurück (falls der Punkt vor xml der 1. ist -> ganzer Dateiname). 2 Beispiele: name.xml --> name; mit.punkt.xml --> mit

RapidMax
10-09-2007, 20:30
Bash kann das genau so gut, aber irgendwie hat sich das noch nicht herumgesprochen...


#!/bin/bash
for i in *.xml; do
rrdtool restore $i ${i%%.xml}.rrd
done

Gruss, Andy

jeebee
11-09-2007, 09:48
nett, danke :) nehm ich gerade in mein Bash-Schnipsel-Dokument auf

jan61
11-09-2007, 19:10
Und hier noch einer:

for i in *.xml; do
rrdtool restore $i `basename $i .xml`.rrd
done

Jan