У меня есть следующие файлы:
$ ls
_010.txt 01.txt 10.txt 1.txt 3.txt mov001 mov00a _mov00A mov00B mov01A
010.txt _0mov00A _1mov00A 2.txt 4.txt mov002 mov00A mov00aA mov010
$
Я использовал ls -1
отдельно или предшествовал различным LANG=
опции и порядок файлов как показано ниже:
ls -1 |
ls -1 LANG=en_GB.utf8 | ls -1 LANG=C
ls -1 LANG=en_US.utf8 | ls -1 LC_ALL=C
---------------------------------------
_010.txt | 01.txt
010.txt | 010.txt
01.txt | 1.txt
_0mov00A | 10.txt
10.txt | 2.txt
_1mov00A | 3.txt
1.txt | 4.txt
2.txt | _010.txt
3.txt | _0mov00A
4.txt | _1mov00A
mov001 | _mov00A
mov002 | mov001
mov00a | mov002
mov00A | mov00A
_mov00A | mov00B
mov00aA | mov00a
mov00B | mov00aA
mov010 | mov010
mov01A | mov01A
Но когда я использую Natural sorting
опция (Предпочтения дельфина> Общий> Сортировка Режима) дельфина 17.12.3, который является версией по умолчанию Kubuntu 18.04, я получаю другой порядок сортировки как показано в Name
столбец в изображении ниже:
Мой вопрос: как дельфин достигает этого типа сортировки?
Руководство дельфина не имеет многого для высказывания:
Сортировка Режима управляет, как объекты отсортированы в представлении. Если Естественная сортировка будет включена, то порядок сортировки трех файлов в качестве примера будет
File1,
File2,
File10.
Если эта опция будет отключена, то нормальная алфавитная сортировка, чувствительная к регистру или нечувствительная к регистру, будет использоваться, который приводит к порядку сортировки
File1,
File10,
File2.
Сортировка для Людей: Естественный Порядок сортировки, обсуждает полноценность естественной сортировки, но не имеет дело с как имена файлов с продвижением _
перечислены перед другими файлами.
Ответы на то, Как я делаю ls символы подчеркивания вида сначала? обратитесь к продвижению _
проблема.
Решение с помощью расширения оболочки для обхода любой сортировки по ls
имеет:
ls -lf _* [!_]*
Так, для файлов в вопросе,
ls -lf -1 _* [!_]*
обеспечивает тот же результат вида, как делает естественный вид дельфина:
$ ls -lf -1 _* [!_]*
_010.txt
_0mov00A
_1mov00A
_mov00A
010.txt
01.txt
10.txt
1.txt
2.txt
3.txt
4.txt
mov001
mov002
mov00a
mov00A
mov00aA
mov00B
mov010
mov01A
$
Я не знаю, является ли это тем же самым механизмом, который дельфин включает для обеспечения естественной сортировки.
"Естественная сортировка" обнаруживает числа в именах файлов и использует числовую сортировку на этой части имен файлов, поэтому 010.txt и 10.txt появляются после 4.txt (10> 4).
1 <2 <10, таким образом, mov001 и mov01A прибывают прежде mov002 и mov010.
0 <1 <10, поэтому _0mov00A <_1mov00A <_010.txt
и т.д.