Dateiendungen verändern

E

Ethillias

Grünschnabel
Hi,

ich habe noch nicht viel mit Shell-Script gemacht und versuche nun Ordner umzubennen die zB ordner1_xlst heißen, jetzt soll er aber die Endung _xslt bekommen
Bis jetzt habe ich das:

DIR="$(find /tmp/ -name "*_xlst")"
#DIR="$(find /tmp/ -name "ordner1_xlst")"
echo $DIR
for NEWDIR in $DIR;do
# cp $DIR /tmp/$DIR_xlst
cp -R $DIR $DIR_xslt
done
exit 0

Kann mir jemand sagen wie ich nun die dateiendung von _xlst nach _xslt umbennenen kann?
Mit einzelnen Ordnern funzt das ja wunderbar aber ich muss viele umbennen =).

thx
 
Zuletzt bearbeitet:
Hallo
Sieh dir mal Variablenexpansion der Shell an, damit geht das ganz fix.
Angenommen alle *TXT in*txt umbenennen.

Code:
for F in $(find -type f -name "*TXT");
do
mv  "$F" "${F%\.TXT}.txt";
done

Gruß Wolfgang
 
Hmm
wenn ich das richtig verstehe ist das ja bei dir so nun schon fertig fehlt nur noch das kopieren oder?
Also:

for F in $(find -type f -name "*_xlst");
do
cp -R $F /tmp/$F
mv "$F" "${F%\_xlst}_xslt";
done

?
 
Zuletzt bearbeitet:
Hmm
wenn ich das richtig verstehe ist das ja bei dir so nun schon fertig fehlt nur noch das kopieren oder?

Jo, für mein Beispiel reicht das. ;)
Du musst halt nur noch die Anpassung an dein Problem vornehmen.

Bei dir geht es ja nicht um TXT txt .
Ich denke du schaffst das schon.
Ersetze zum Probelauf erstmal mv mit echo, dann siehst du was passiert.

Gruß Wolfgang
PS Versuch mal zu verstehen was da passiert.
Stichwort Variablenexpansion

EDIT// Habe eben erst dein edit gesehen.
Der Slash bei mir \. schützt den Punkt, weil der eine Sonderbedeutung hat.
Der Unterstrich hat das nicht.
Also lass ihn weg.
Code:
${F%_xlst}
 
Zuletzt bearbeitet:

Ähnliche Themen

Verschlüsseltes Backup-Script mit rsync

continue in Schleife einbauen

Dateien löschen mit negierun

verzeichniss suche funktioniert nicht

Problem mit Leerzeichen im Namen

Zurück
Oben