DELETED
내 출력의 첫 번째 폴더가 되도록 하고 싶습니다 ls
.
이 문제를 일으키는 기호를 앞에 추가할 수 있나요? 나는 이것을 시도했지만 ^
그들 -
중 누구도 작동하지 않습니다.
답변1
^
, ASCII 순서로, 그 뒤에 대문자가 옵니다. -
모든 문자와 숫자 앞, 다른 여러 구두점 뒤.
ASCII 인쇄 가능 문자는 다음과 같습니다.
!"#$%&'()*+,-./0123456789:;<=>?
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_
`abcdefghijklmnopqrstuvwxyz{|}~
ls
그러나 파일이 나열되는 순서는 현재 로케일의 영향을 받을 수 있으므로 이것이 반드시 도움이 되는 것은 아닙니다 .
공백이나 !
문자로 파일 이름을 시작할 수 있지만 이렇게 하면 파일을 참조하지 않고는 파일을 참조하기가 어려워지고 로케일 설정이 방해를 받을 수 있습니다. 십진수 앞에 오는 대부분의 다른 ASCII 문자에도 비슷한 문제가 있습니다.
이름에 홀수 문자가 포함된 다른 파일이 없다고 가정하면 가장 좋은 방법은 0
문자열 s로 시작하는 것입니다.
000_DELETED
(저는 Thunderbird와 Outlook에서 이메일 폴더의 이름을 지정하는 데 유사한 기술을 사용합니다.)
답변2
GNU 시스템에서는 C/POSIX를 제외한 대부분의 로케일에서 정렬 시 일부 문자가 무시됩니다. 예를 들어 _
, , 공백 또는 0x1이 .
이에 해당합니다 .
.a
예를 들어 , .c
, __b
, 가 , , , _d
로 정렬되는 이유가 바로 이 때문입니다 ..a
__b
.c
_d
다음으로 구성된 문자열의 경우오직그것들무시당하다문자, 정렬 순서는 로캘에 정의되어 있으며 일반적으로 ASCII SPC가 먼저 옵니다. 따라서 단일 공백 문자가 첫 번째 정렬된 파일이 됩니다(0x1 .
이전 (C 로케일의 첫 번째) ..
), 그 다음에는 공백 2개가 됩니다... 등등. 그러나 <SPC>DELETED
정렬됩니다.뒤쪽에 DELETED
이므로 이름이 지정된 파일은 대부분의 다른 파일보다 먼저 정렬되지만, 다른 문자열 앞에 ___
놓는다고 해서 정렬 속도가 빨라지는 것은 아닙니다.___
무시되지 않는 문자 중에서 ASCII 0은 일반적으로 C가 아닌 로케일의 첫 번째 문자입니다.
따라서 0이라는 파일은 무시되지 않은 문자를 포함하는 다른 파일보다 먼저 정렬됩니다. 무시되지 않은 문자가 포함된 파일 접두어를 사용하면 0
C가 아닌 로케일에서 해당 파일이 더 일찍 정렬됩니다.
따라서 이름이 지정된 파일은 $'\01\01\01_000_DELETED'
C 로케일에서 매우 초기에 정렬되고(0x1이 첫 번째 문자이므로 먼저 정렬되므로) 다른 로케일에서도 정렬됩니다(0x1 및 _는 모두 무시되지만 s는 0
무시할 수 없는 문자이므로 정렬됨). 첫 번째).
C가 아닌 로케일에서는 여전히 정렬됩니다.뒤쪽에 .
또는 ..
.
DELETED
또 다른 옵션은 무시된 문자로 작성하는 것입니다 . 예를 들어 " ₫€£€₮€₫"
이러한 통화 기호는 정렬 시 무시됩니다. 또한 SPC는 C 로캘에서 상당히 일찍 정렬하므로 .
C 및 비C 로캘 모두에서 일찍 정렬해야 합니다.
$ touch $' \u20ab\u20ac\u00a3\u20ac\u20ae\u20ac\u20ab' $'\01' ' ' 0normal-file $'\01\01\01_000_DELETED'
$ ls -1a
₫€£€₮€₫
./
../
?
???_000_DELETED
0normal-file
$ LC_ALL=C ls -1a
?
???_000_DELETED
????????????????????
./
../
0normal-file
$ LC_COLLATE=C ls -1a
?
???_000_DELETED
₫€£€₮€₫
./
../
0normal-file