As you may recall I prefer to prepend my track names with the album number in the case of multiple disc albums (box sets, double-albums, &c). I have some rather large (30 CD) sets and am lazy didn’t want to run my other script 30 times, so I wrote this new version to deal with matters recursively.
(There is now an improved version of this script available here. The new version allows the user to select file extensions while the version on the page below is specifically written for FLAC files.)
(Use the pointy brackets button to copy and paste.)
## #!/bin/bash # Prepend album number before track numbers automatically and recursively # by JamesIsIn from JamesIsIn.com # Do something nice today. ## gather information # obtain directory in which to work echo echo echo "This script changes FLAC file names under a containing folder which you supply." echo "It assumes that your discs are separated into numbered sub-folders." echo "As such sub-folder names should be 01, 02, and so forth." echo echo "Example: \"01/01 – Track Name.flac\" becomes \"01.01 – Track Name.flac\"" echo read -e -p "I will require the path to the containing folder: " if [ -d "$REPLY" ]; then printf "\n\nI have confirmed this is a directory.\n" directory="$REPLY" else printf "\n\nI cannot find this directory.\n\n" echo "$REPLY" exit 1 fi read -p "Press <ENTER> to continue (ctrl-c will abort)." echo ## do the work # find all two-digit numerically-named sub-directories under root directory find "$directory" -type d -name [0-9][0-9] > /tmp/whyme echo # parse disc folders into array declare -a discfind let i=0 while read discline; do discfind[$i]=$discline # extract disc number from folder path disc=$( basename "$discline" ) discpath=$( dirname "$discline" ) # change file names in sub folder for filepath in "/$discpath/$disc/"*.[Ff][Ll][Aa][Cc]; do filename=$( basename "$filepath" ) mv "$discpath/$disc/$filename" "$discpath/$disc.$filename" echo $filename changed done ((i++)) done < /tmp/whyme rm /tmp/whyme exit ##
There are a couple of assumptions that this script makes (which are consistent with my preferences).
For instance, I like my file names to run album number dot track number (01.01 – Track Name.flac). As such I name the containing folders each a two-digit number based on the disc number (disc number three goes into a folder called 03). The script then uses that folder name or disc number (since they are now the same) as the prepend for the file name.
I hope that helps to make your life a little better.
Thanks for stopping.
Good job. Life is really easier with these automated scripts.
The html entity in the source code doesn’t render properly, i.e. ‘>’ and ‘<‘. Maybe a higher version of SyntaxHighlighter will help. Also, looks like SH’s official demo doesn’t escape the bash code at all. FYI, http://alexgorbatchev.com/SyntaxHighlighter/manual/brushes/bash.html
I agree about automation.
The problem with the brackets is only in the display on the posts themselves. If you click on the double-bracket symbol in the upper-right corner it will bring up the copy pop-up and there the symbols are displayed correctly. I will look into your link because this replacement is broken and buggy and driving me nuts.