Sorting is influenced by the locale that is being used, especially the LC_COLLATE setting. Have a look at these examples:
Code:
$ LC_COLLATE=en_US.utf8
$ ls -la
drwxr-x--- 8 druuna druuna 4096 jan 5 11:04 .
drwxr-x--- 4 druuna druuna 16384 jan 5 10:34 ..
drwxr-x--- 2 druuna druuna 4096 jan 5 11:04 dir
drwxr-x--- 2 druuna druuna 4096 jan 5 11:04 _dir
drwxr-x--- 2 druuna druuna 4096 jan 5 11:04 .dir
drwxr-x--- 2 druuna druuna 4096 jan 5 11:03 Dir
drwxr-x--- 2 druuna druuna 4096 jan 5 11:03 _Dir
drwxr-x--- 2 druuna druuna 4096 jan 5 11:03 .Dir
-rw-r----- 1 druuna druuna 0 jan 5 11:04 file
-rw-r----- 1 druuna druuna 0 jan 5 11:04 _file
-rw-r----- 1 druuna druuna 0 jan 5 11:04 .file
-rw-r----- 1 druuna druuna 0 jan 5 11:04 File
-rw-r----- 1 druuna druuna 0 jan 5 11:04 _File
-rw-r----- 1 druuna druuna 0 jan 5 11:04 .File
and now with LC_COLLATE set to POSIX (or C):
Code:
$ LC_COLLATE=POSIX
$ ls -la
drwxr-x--- 8 druuna druuna 4096 jan 5 11:04 .
drwxr-x--- 4 druuna druuna 16384 jan 5 10:34 ..
drwxr-x--- 2 druuna druuna 4096 jan 5 11:03 .Dir
-rw-r----- 1 druuna druuna 0 jan 5 11:04 .File
drwxr-x--- 2 druuna druuna 4096 jan 5 11:04 .dir
-rw-r----- 1 druuna druuna 0 jan 5 11:04 .file
drwxr-x--- 2 druuna druuna 4096 jan 5 11:03 Dir
-rw-r----- 1 druuna druuna 0 jan 5 11:04 File
drwxr-x--- 2 druuna druuna 4096 jan 5 11:03 _Dir
-rw-r----- 1 druuna druuna 0 jan 5 11:04 _File
drwxr-x--- 2 druuna druuna 4096 jan 5 11:04 _dir
-rw-r----- 1 druuna druuna 0 jan 5 11:04 _file
drwxr-x--- 2 druuna druuna 4096 jan 5 11:04 dir
-rw-r----- 1 druuna druuna 0 jan 5 11:04 file
I have set LC_COLLATE to POSIX, which uses the order shown in the ascii table (man ascii). I have a rather simple schema I use for personal files and directories: Directories start with a capital and files do not, the sorting order I get by doing this is: hidden (dot) files than directories than files.
If at all possible I try to avoid using special characters (% + , etc) due to problems that might arise when scripting/programming.