This article will try to convince you that adding some limitations on legal Unix/Linux/POSIX filenames would be an improvement. Many programs already presume these limitations, the POSIX standard already permits such limitations, and many Unix/Linux filesystems already embed such limitations so it'd be better to make these (reasonable) assumptions true in the first place. This article will discuss, in particular, the three biggest problems: control characters in filenames (including newline, tab, and escape), leading dashes in filenames, and the lack of a standard character encoding scheme (instead of using UTF-8). It also discusses spaces in filenames and shell metacharacters in filenames, including why setting the Bourne shell IFS value to newline and tab is a good idea.
Marco Fioretti wrote a simple script to solve a pesky problem automatically. He shares his method of cleaning up bad folder and file names.