ファイルの並べ替えに特殊文字を含める

ファイルの並べ替えに特殊文字を含める


ファイル名を並べ替えるときに、Linuxで特殊文字を含めようとします。私が達成したいソート順は、すべての特殊文字を最初に使用してから、数字、文字(大文字と小文字を区別しない)です。

Linuxのデフォルトのソートは特殊文字を完全に無視します(例の最初の列「ls-before」を参照)。

LC-COLLATE=C私が見つけた提案の1つはorを使用することですLC_ALL=C。これは特殊文字を考慮しますが、奇妙な方法でソートされます。一部は数字の前に配置され、一部は数字と大文字の間に配置され、下線は大文字と小文字の間に配置されます。すべての大文字はすべての小文字よりも優先されます。私が望むものではありません(例の2番目の列)。

私はEDITを試しました。/usr/share/i18n/locales/iso14651_t1_common特殊文字で行をIGNORE;IGNORE;IGNORE変更しました。<RES-1>;IGNORE;IGNORE

例えば<U005F> IGNORE;IGNORE;IGNORE;<U005F> # 33 _
<U005F> <RES-1>;IGNORE;IGNORE;<U005F> # 33 _

その後、ロケール(en_GB)を再コンパイルしましたsudo localedef -i en_GB -f UTF-8 -vc en_GB(ロケール自体は変更されませんでした)。

ファイルの並べ替えには特殊文字が含まれ、すべて数字の前に表示されます(これが私が望むものです)。ただし、特殊文字はソートではなくグループ化にのみ使用されるようです(例リストの「ls-after」を参照)。並べ替えは、特殊文字の後に続く文字に基づいているようです。特殊文字に基づいてソートすると、「必要な」列に似た結果が生成されます。

例:


    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        ..

特殊文字をグループ化するのではなく、実際にソートする方法を知っている人はいますか?

しかし、私はすべてのアプリが新しいソートに従いたかったのですが、各アプリにはファイルに独自のソート規則があるようです(「caja」列と「nemo」列を参照)。すべてのアプリケーションに同じ順序に従う方法はありますか?それともアプリケーションに順序がハードコードされていますか?私のシフトはiso14651_t1_commonネモのソートには影響しませんが、Cajaはネモのように動作します。

Linux mint 18.3 コンパニオンを使用します。これが重要かどうかはわかりませんが、デュアルブートシステムを使用していてデータがNTFSドライブにあるため、すべてのソリューションがNTFSでも機能する必要があります。

ありがとうございます!

ベストアンサー1

おすすめ記事