A little late for the OP, but hopefully useful for anyone who gets here much later by google...
I found the answer by @awi and comment on -delete by @Jamie Bullock really useful. A simple utility so you can do this in different directories ignoring different file names/types each time with minimal typing:
rm_except (or whatever you want to name it)
#!/bin/bashignore=""for fignore in "$@"; do ignore=${ignore}"-not -name ${fignore} "donefind . -type f $ignore -delete
e.g. to delete everything except for text files and foo.bar:
rm_except *.txt foo.bar
Similar to @mishunika, but without the if clause.