Trying to figure out ffmpeg, currently working on getting 24bit/96khz FLAC files into 16bit/48khz.
As a bash script, that produces new files with -16 appended to their names; one could rename then delete the original files easily in the script but I'm a little too paranoid for that.
#!/bin/sh
# requires: ffmpeg
for f in *.flac;
do
echo "Processing $f"
ffmpeg -i "$f" -sample_fmt s16 -ar 48000 "${f%.flac}-16.flac"
done