I've had one for a few years...
Code:
#!/usr/bin/python
import os, string, re
for fname in os.listdir(os.curdir):
newname = string.lower(fname)
newname = re.sub("\s", "_", newname)
newname = re.sub("_-_", "_", newname)
newname = re.sub("\'", "-", newname)
os.rename(fname, newname)
Make a file in ~/bin , put the above code in it, then "chmod u+x filename". To run it, cd to the directory with all the MP3s, and run "filename". It worked, and I never used it too often, so I never updated it to be able to add a directory to the command... "filename ~/mp3s/".
<< EDIT >>
If you want to change it a bit...
The string.lower changes the filename to all lowercase characters.
First re.sub replaces spaces with underscores.
Second replaces a underscore-hyphen-underscore with a single underscore.
Third replaces single-quotes with a hypen.