Unsavory Characters

You're cleaning up a Linux filesystem to make it compatible with Windows (which doesn't accept the kind of characters that Linux hangs around with).

find . -name "*[<>:\\|?*]*" -exec bash -c 'x="{}"; y=$(sed "s/[<>:\\|?*]\+/-/g" <<< "$x") && mv "$x" "$y" ' \;