B
Bgag
Hallo!
Ich habe ein kleines Problem. Ich möchte ein Shell-Script schreiben, dass ich mit einem Ordnernamen aufrufen kann, dass mir dann alle mp3-Dateien in diesem Ordner nach bestimmten Regeln umbenennt.
Zudem soll es einen optionalen Parameter -r geben, der es ermöglich den Befehl auch auf alle unterverzeichnisse anzuwenden.
Ich habe einen ersten Entwurf gemacht, der leider nicht funktioniert. kann mir jemand helfen?
Zudem hätte ich noch eine Frage die abschließende Verwendung betreffend. Reicht es die fertige Bash-Datei in den /lib/ Ordner zu verschieben, damit ich mit ihr überall arbeiten kann ohne sie mit bash aufzurufen? Wird dann beim arbeiten auch immer das aktuelle verzeichnis verwendet?
MfG, Andy
Ich habe ein kleines Problem. Ich möchte ein Shell-Script schreiben, dass ich mit einem Ordnernamen aufrufen kann, dass mir dann alle mp3-Dateien in diesem Ordner nach bestimmten Regeln umbenennt.
- Punkte, Leerzeichen und Bindestriche durch Unterstriche ersetzen
- hintereinander stehende Unterstriche durch einen Unterstrich ersetzen
- Zahlen und Unterstriche am Anfang des Dateinamens ersetzen
- alle Dateinmane klein schreiben
- Dateiendung von _mp3 zu .mp3 korrigieren
Zudem soll es einen optionalen Parameter -r geben, der es ermöglich den Befehl auch auf alle unterverzeichnisse anzuwenden.
Ich habe einen ersten Entwurf gemacht, der leider nicht funktioniert. kann mir jemand helfen?
Zudem hätte ich noch eine Frage die abschließende Verwendung betreffend. Reicht es die fertige Bash-Datei in den /lib/ Ordner zu verschieben, damit ich mit ihr überall arbeiten kann ohne sie mit bash aufzurufen? Wird dann beim arbeiten auch immer das aktuelle verzeichnis verwendet?
MfG, Andy
Code:
for i in "*.[mM][pP]3";
do
# convert uppercase to lowercase
n=$(echo $i | tr [:upper:] [:lower:])
# replace whitespaces with underscores
$n=$(echo $n | tr [:blank:] _)
# replace dots with underscores
$n=$(echo $n | tr . _)
# replace hypens with underscores
$n=$(echo $n | tr - _)
# replace multiple underscores
$n=$(echo $n | tr -s _)
# remove numbers at the beginning
$n=$(echo $n | sed 's/^[0-9]*//')
# remove underscores at the beginning
$n=$(echo $n | sed 's/^\_//')
# correct file ending
$n=4(echo $n | sed 's/\_mp3/\.mp3/')
# rename file
mv -v "$i" "$n";
done