파일 이름을 정렬할 때 Linux에서 특수 문자를 포함시키려고 합니다. 내가 달성하려는 정렬 순서는 모든 특수 문자를 먼저 사용한 다음 숫자, 문자(대소문자 구분 안 함)입니다.
Linux의 기본 정렬은 특수 문자를 완전히 무시합니다(예제의 첫 번째 열 "ls-before" 참조).
LC-COLLATE=C
내가 찾은 제안 중 하나는 or 를 사용하는 것입니다 LC_ALL=C
. 이것은 특수 문자를 고려하지만 이상한 방식으로 정렬됩니다. 일부는 숫자 앞에 정렬되고, 일부는 숫자와 대문자 사이에 정렬되며, 밑줄은 대문자와 소문자 사이에 배치됩니다. 모든 대문자는 모든 소문자보다 우선합니다. 내가 원하는 것도 아닙니다(예제의 두 번째 열).
나는 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
Nemo의 정렬에는 영향을 미치지 않지만 Caja는 Nemo처럼 작동합니다.
Linux mint 18.3 컴패니언을 사용합니다. 이것이 중요한지는 확실하지 않지만 이중 부팅 시스템을 사용하고 있고 데이터가 NTFS 드라이브에 있으므로 모든 솔루션이 NTFS에서도 작동해야 합니다.
감사해요!