AlecTBM Skrevet 12. oktober 2009 Del Skrevet 12. oktober 2009 (endret) Hallo Jeg har laget et bash script som lager en ny mappestruktur i musikkmappa Det er ganske ferdig, men jeg vil gjerne ha litt innspill på hva jeg kan gjøre for å få det bedre. Krever: eyeD3 #!/bin/bash TMPdir=".tmp" MUSICdir=$TMPdir/"music" OTHERdir=$TMPdir/"other" mkdir "$TMPdir" mkdir $MUSICdir mkdir $OTHERdir ##Make filelistening file find . -type f \( ! -regex '.*/\..*' \) | sed "s#^.#$(pwd)#" | grep -i .mp3 >$TMPdir/mp3files ##Make otherfileslistening file find . -type f \( ! -regex '.*/\..*' \) | sed "s#^.#$(pwd)#" | grep -vi .mp3 | grep -v $0 | grep -v Thumbs.db >$TMPdir/otherfiles ##Move otherfiles while read FILE do mv -n "$FILE" $OTHERdir/ done < $TMPdir/otherfiles ##Move music files while read FILE do artist=`eyeD3 --jep-118 "$FILE" | grep 'artist' | sed 's/ //' | sed -e 's/^<.*>\([^<].*\)<.*>$/\1/' -e 's/\///g' -e 's/%//g' -e 's/:/,/g' -e 's/\?//g' -e 's/\[//g' -e 's/\]//g'` album=`eyeD3 --jep-118 "$FILE" | grep 'source' | sed 's/ //' | sed -e 's/^<.*>\([^<].*\)<.*>$/\1/' -e 's/\///g' -e 's/%//g' -e 's/:/,/g' -e 's/\?//g' -e 's/\[//g' -e 's/\]//g'` title=`eyeD3 --jep-118 "$FILE" | grep 'title' | sed 's/ //' | sed -e 's/^<.*>\([^<].*\)<.*>$/\1/' -e 's/\///g' -e 's/%//g' -e 's/:/,/g' -e 's/\?//g' -e 's/\[//g' -e 's/\]//g'` if [ "$artist" == '' ] then echo 'Artist tag on ' $FILE ' was empty, aborting' exit 2 elif [ "$title" == '' ] then echo 'Title tag on ' $FILE ' was empty, aborting' exit 2 fi newFolder="$MUSICdir/$artist/$album/" if [ "$album" == '' ] then newFolder="$MUSICdir/$artist" fi newFilename="$artist - $title.mp3" target="$newFolder/$newFilename" ##Make new folder mkdir -p "$newFolder" ##Move file mv "$FILE" "$target" chmod 644 "$target" echo "Moved $newFilename (album: $album)" done < $TMPdir/mp3files ## find . -type f \( ! -regex '.*/\..*' \) | sed "s#^.#$(pwd)#" | grep -i .mp3 >$TMPdir/mp3files2 if [ -s $TMPdir/mp3files2 ] then echo 'All files was moved' else echo 'This files was not moved due to duplicate ' cat $TMPdir/mp3files2 fi echo 'Remove folders' echo 'Write "yes" to accept, "no" to abort' while [ "$OK" != 'yes' ] do read OK if [ "$OK" == 'no' ] then echo 'Aborting' exit 0 elif [ "$OK" == 'yes' ] then echo 'Removing...' else echo '"yes" to continue, "no" to abort' fi done for folder in * do rm -Rv "$folder" done ##Make new folders echo 'Done removing, moving back the new folders' mv $MUSICdir/* ./ ##Move other files mkdir 'otherfiles' mv $OTHERdir/* otherfiles/ echo 'Removing TMP folder' rm $TMPdir -r echo 'Done' exit 0 En ting jeg ikke er helt fornøyd med er hvis artist taggen er tom, da bare quiter den. Forslag på endringer der? Takker for alle innspill AlecTBM EDIT: Endret metoden på hvordan scriptet mellomlagrer filene, nå bygger den mappe strukturen i .tmp Samt at den nå renamer filene også i forhold til ID3, gjort for å hindre at duplikate filnavn skal gjøre at sanger forsvinner Endret 13. oktober 2009 av AlecTBM Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå