sed --in-place 's/[[:space:]]\+$//' file
That will delete all POSIX standard defined whitespace characters, including vertical tab and form feed. Also, it will only do a replacement if the trailing whitespace actually exists, unlike the other answers that use the zero or more matcher (*).
–in-place is simply the long form of -i. I prefer to use the long form in scripts because it tends to be more illustrative of what the flag actually does.It can be easily integrated with find like so:
find . -type f -name '*.txt' -exec sed --in-place 's/[[:space:]]\+$//' {} \+