The Forester can play MP3 files from a USB flash drive and, given the utter craptitude of radio stations around here, I dumped a bunch of CD tracks onto a drive. For historic reasons, very few of the tracks had ID3 tags, so the Forester’s display showed only gnarly file names for the last few years.
This burst of Bash line noise runs through the directory of album directories, extracts the relevant information from the directory and track names, then pops the tags in place:
for d in * ; do for f in $(ls $d) ; do art=$(echo $d | cut -d- -f1 | tr '_' ' ' | sed 's/-/ - /g') ; alb=$(echo $d | cut --complement -d- -f1 | tr '_' ' ' | sed 's/-/ - /g') ; t=$(echo $f | cut -d- -f1) ; s=$(echo ${f%.*} | cut --complement -d- -f1 | tr '_' ' ' | sed 's/-/ - /g') ; id3tag -2 -a"$art" -A"$alb" -s"$s" -t$t $d/$f ; done ; done
It’s (marginally) easier to see this way:
for d in * ; do
for f in $(ls $d) ; do
art=$(echo $d | cut -d- -f1 | tr '_' ' ' | sed 's/-/ - /g')
alb=$(echo $d | cut --complement -d- -f1 | tr '_' ' ' | sed 's/-/ - /g')
t=$(echo $f | cut -d- -f1)
s=$(echo ${f%.*} | cut --complement -d- -f1 | tr '_' ' ' | sed 's/-/ - /g')
id3tag -2 -a"$art" -A"$alb" -s"$s" -t$t $d/$f
done
done
What’s going on:
cut
– extracts track number and song titletr
– convert underscores to spacessed
– put spaces around hyphens
The id3tag
program can install either ID3V1 or ID3V2 tags on each pass, so I just recalled the command, edited the -1
to -2
, and ran the whole mess again.
After a bit of manual cleanup, things looked pretty good.
Although the id3ren
program seemed as though it could do the trick, it’s really intended to rename files from existing tags. Making it go the other way rapidly became a steel-cage death match; I gave up.