#!/bin/bash # Mp3navn 1.1 # tegnsett=iso8859-1 # Endrer navnet på mp3-filer basert på id3-tag-informasjon # krever mp3info # Dette skriptet ble til i en sammenblanding av en tidligere utgave (funksjonen rename()), og skriptet ibeadogg. # En engelsk oversettelse av dette skriptet heter mp3name. # bruk if [ "$#" = "0" -o "$1" = "-h" -o "$1" = "--help" ]; then echo " Bruk : $(basename $0) *mp3" echo -e "\t$(basename $0) fil1 fil2 ..." echo -e "\t$(basename $0) mappe1 mappe2 ...\n" echo -e "Gir nytt navn til en liste av mp3-filer. Du kan også spesifisere mapper som inneholder mp3-filer, eller en kombinert liste av filer og mapper.\nIkke skriv baner som begynner med punktum (.) eller slutter med skråstrek (/). Det vil forvirre skriptet til å finne på alternative filnavn til filer som hadde riktig navn fra før, i stedet for å la dem være." exit 1 else problem=0 feil=0 tell=0 fi # funksjon som gir en fil nytt navn rename() { NY=`mp3info -p %a_-_%t "$1"` if [ "$NY" == "" ]; then echo "Det virker som du ikke har mp3info installert." exit 1 elif [ "$NY" != "_-_" ]; then DIR=`dirname "$1"` if [ $DIR != "." ]; then NY="$DIR/$NY" fi if [ -e "$NY".mp3 ]; then #sjekk om nytt navn er opptatt if [ "$1" != "$NY".mp3 ]; then #Er gammel og ny bane like? blir forvirra hvis de likevel peker til samme fil vedheng=1 while [ -e "$NY"_"$vedheng".mp3 ]; do #sørg for å ikke overskrive en annen fil ((vedheng++)) done mv "$1" "$NY"_"$vedheng".mp3 ((tell++)) ((problem++)) echo "$1 --> $NY""_""$vedheng.mp3" fi else mv "$1" "$NY".mp3 ((tell++)) echo "$1 --> $NY.mp3" fi else ((feil++)) fi } for i in "$@"; do if [ -d "$i" ]; then # sjekker om fil er en mappe for j in "$i"/*.mp3; do # finner filer i mappa if [ -f "$j" ]; then rename "$j" fi done elif [ -f "$i" ]; then rename "$i" # behandler enkeltfil else echo "$i finnes ikke." fi done if [ $tell -eq 1 ] ; then echo "1 fil fikk nytt navn." else echo "$tell filer fikk nytt navn." fi if [ $problem -gt 0 ] ; then echo "$problem filer fikk vedheng på fornavnet fordi navnet var i bruk." fi if [ $feil -gt 0 ] ; then echo "$feil filer fikk ikke nytt navn fordi ID3-taggen ikke kunne leses." fi