I'm trying to make Linux include special characters when sorting filenames. The sort order I'm trying to achieve is: first all special characters, then numbers, then letters (case insensitive).

The default sort in Linux completely ignores special characters (see the first column "ls-before" in the examples).

One suggestion I found was to use LC-COLLATE=C or LC_ALL=C. This indeed considers special characters, but they are sorted in strange ways: some are sorted before numbers, some between numbers and capital letters, and underscore is placed between capital and small letters. And all capital letters come before all small letters. Also not what I want (second column in examples).

I've tried editing /usr/share/i18n/locales/iso14651_t1_common: changed the lines with special characters from IGNORE;IGNORE;IGNORE to <RES-1>;IGNORE;IGNORE

eg <U005F> IGNORE;IGNORE;IGNORE;<U005F> # 33 _
to <U005F> <RES-1>;IGNORE;IGNORE;<U005F> # 33 _

Then I recompiled the locale (en_GB) with sudo localedef -i en_GB -f UTF-8 -vc en_GB (I didn't change the locale itself)

Sorting files now does include special characters and they all appear before the numbers (which is what I want), but the special characters seem to be used merely for grouping, not for sorting (see column "ls-after" in the examples). Sorting seems to be based on the character following the special character. Sorting on the special character should produce a result more akin to the column "desired".


    ls-before     LC_COLLATE=C   caja        nemo      ls-after  desired
    -----------   ------------   -----       -----     --------  -------
    1             %b             1           1         =a        =a
    11            1              2           2         _a        =b
    111           11             3           3         =b        _a
    2             111            11          11        _b        _b
    3             2              111         111       %b        %b
    a             3              =a          a         1         ..
    =a            =a             _a          =a        11        ..
    _a            =b             =b          _a        111       .. 
    A             A              _b          A         2         ..
    aa            AA             %b          aa        3         ..
    AA            AB             a           AA        a         ..
    ab            Ab             A           ab        A         .. 
    a_b           B              a_b         a_b       a_b       a_b
    a-b           BB             a-b         a-b       a-b       a_c 
    a#b           _a             a#b         a#b       a#b       a_C
    a%b           _b             a%b         a%b       a%b       a-b
    aB            a              a_c         aB        a_c       a-c 
    Ab            a#b            a-c         Ab        a-c       a#c
    AB            a%b            a_C         AB        a_C       a&c
    ac            a-b            aa          ac        aa        ..
    a_c           a-c            AA          a_c       AA        ..
    a-c           aB             ab          a-c       ab        ..
    a_C           a_C            aB          a_C       aB        ..
    b             a_b            Ab          b         Ab        ..
    =b            a_c            AB          =b        AB        ..
    _b            aa             ac          _b        ac        ..
    %b            ab             b           %b        b         ..
    B             ac             B           B         B         ..
    bb            b              bb          bb        bb        ..
    BB            bb             BB          BB        BB        ..

Does anyone have an idea on how to truly sort the special characters instead of just grouping them?

On a sidenote, I would have liked all applications to follow the new sorting, but it looks like every application has its own rules for sorting files (see columns "caja" and "nemo"). Is there a way to force every application to follow the same sorting, or is sorting hard coded in the applications? My alternations in iso14651_t1_common had no effect on the sorting in Nemo, but made Caja behave like Nemo.

Using Linux mint 18.3 mate. Not sure if this is important, but I'm using a dual boot system with my data on an NTFS drive, so any solution should work on NTFS as well.


  • Did you try sorting all as lowercase? This would put special characters in front of letters.
    – wiiiktor
    Apr 21, 2021 at 23:43
  • Thanks for replying! No, I haven't tried that. I've actually given up on this since my main file manager (Double Commander) does include special characters in its sorting. And I went as far as manually numbering my main directories and files so that they would appear in the same location in every other program. Quite sad actually...
    – wayan
    Apr 27, 2021 at 1:28


You must log in to answer this question.

Browse other questions tagged .