Dateinamen mit Extension auf einen Maximalwert kürzen

S

shakky4711

DOS-FAN
Hallo, ich muss Dateinamen die eine Extension (.mp3) haben auf eine maximale Länge von 30 Zeichen kürzen damit die Titel in meinem Auto Radio erkannt werden.

Es gibt keine Fallen wie Umlaute oder Blanks in der Dateinamen, ferner befinden sich alle Dateien sind in einem einzigen Verzeichnis. Leider habe ich keine Lösung für diese wahrscheinlich recht einfache Sache finden können, alle anderen Lösungen bezogen sich auf weit komplexere Dinge. Ich habe schon einige Dinge probiert hat aber nicht funktioniert.

Systeme: Wahlweise FreeBSD mit CSH, SUSE mit BASH oder Win unter CYGWIN

Vielen Dank für Eure Hilfe
 
Mit bash:
Code:
for file in *.mp3; do
    BASE=${file%.mp3}
    echo ${BASE:0:30}.mp3
done

Mit sed: (und sh-commandsubstitution + Schleife. Musst schauen, wie das auf csh geht...)
Code:
for file in *.mp3; do
    echo $file|sed -r 's!^(.{30}).*\.mp3$!\1.mp3!'
done

Geht natürlich auch ohne "-r" switch von sed. Dann musst du allerdings die Klammern (Rundklammern und Curlybraces) escapen.

Code:
$ bash --version
GNU bash, version 3.2.25(1)-release (i486-pc-linux-gnu)
Copyright (C) 2005 Free Software Foundation, Inc.
$ sed --version
GNU sed version 4.1.5
Copyright (C) 2003 Free Software Foundation, Inc.

edit: ist natürlich die Frage, ob die Dateien mit oder ohne extension 30 Zeichen lang sein sollen. Falls mit, kannst du 30 einfach in 26 ändern.
 
Zuletzt bearbeitet:
Zurück
Oben