Dateinamen kürzen

H

holybabel

Grünschnabel
Hallo zusammen,

ich möchte in einem Verzeichnis Dateinamen von 9 Stellen + Dateiendung auf die ersten 8 Stellen + Dateiendung kürzen. Habe dazu folgenden sed Befehl im Netz gefunden welcher allerdings von einer unbekannten Länge ausgeht:

mv "$file" "`echo $file |sed -re 's/^([^.]{,8})[^.]*\.(.{,3}).*$/\1.\2/'`"

Leider erhalte ich beim ausführen dieses Befehls folgende Fehlermeldung:

"sed: illegal option -- r"

Ich versuche das ganze auf einer HP-UX Kiste zum laufen zu bekommen. Bin allerdings absoluter SED-Neuling und hab keine Ahnung was ich nun machen muss, kann mir da jemand weiterhelfen?

Gruß HolyBabel
 
Standard-sed auf HP-UX unterstützt keine 'extended regular expressions', d.h. die "-r" Option gibts hier nicht ("sed: illegal option -- r"; Blick in die Manual-Page sollte das schon zeigen.).

Du kannst dir natürlich 'nen GNU-sed installieren ... oder aber:

Wenn alle deine Dateienamen aus exakt 9 Zeichen Basis und einer beliebigen Erweiterung zusammengesetzt sind, kannst du mit dem alten "sed" einfach etwas wie
Code:
new=`echo "$old" | sed -e 's/\(........\).\.\(.*\)/\1.\2/'`
mv "$old" "$new"
verwenden. Vor dem "mv" zu überprüfen, ob es die Datei "$new" schon gibt, schadet sicher nicht ;-)

Unter den o.a. Voraussetzungen (exakte Länge bekannt etc.), ist evtl. "cut" etwas effizienter/einfacher als sed; das gäbe dann
Code:
new=`echo "$old" | cut -c1-8,10-`

Gruss
 
Danke dir...der cut Befehl funktioniert perfekt.
 

Ähnliche Themen

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

HP PSC 2175 - CUPS druckt nicht

Java Development Kit Installation

Kein X-server mehr, Yast hängt sich bei Grafikkarte+Monitor auf

Linux in a Nutshell

Zurück
Oben