алфавитный список отличается от программ

Это не проблема, но мне просто интересно.

Почему алфавитный список файлов отличается между программами?

Мне кажется, что каждая программа реализует свой собственный подход для сортировки имен в алфавитном порядке. Может быть, это поток из библиотек, на которые рисуются программы. Ясно, что у них разные обычаи для обработки символов типа «_» или «-». Я думаю, что это немного странно, что они несовместимы.

Вот пример. Я создаю 2 файла, «flop.png» и «flop_drop.png». В оболочке BASH в списке есть:

-rw-rw-r-- 1 pauljohn pauljohn 3547 Apr 1 21:50 flop_drop.jpg -rw-rw-r-- 1 pauljohn pauljohn 3547 Apr 1 21:50 flop.jpg

Однако в Nautilus это инвертировано

Но в Geeqie я вижу то же, что и в BASH:

Пока программа поиска UNIX согласуется с Nautilus:

$ find . -name "flo*" ./flop.jpg ./flop_drop.jpg

Я видел различные морщины, подобные этому , Я не совсем понимаю шаблон. Я размножаю вариации и вывод ls в BASH указывает, что он включает суффиксы в алфавитном порядке сортировки:

-rw-rw-r-- 1 pauljohn pauljohn 3547 Apr 1 21:50 flop_drop.jpg -rw-rw-r-- 1 pauljohn pauljohn 3547 Apr 1 21:50 flop.jpg -rw-rw-r-- 1 pauljohn pauljohn 3547 Apr 1 22:14 flop_nop.jpg -rw-rw-r-- 1 pauljohn pauljohn 3547 Apr 1 22:15 flop_qrop.jpg

Но Nautilus всегда оставляет «flop.jpg» во-первых, независимо от того, что следует за подчеркиванием. Я вижу, что Тунар делает то же самое.

Однако для сравнения я установил средство просмотра изображений с именем «gwenview». Там мы получаем нечто совершенно другое. Порядок:

flop_drop.jpg flop_nop.jpg flop_qrop.jpg flop.jpg

Существуют ли разные школы мысли о том, как это должно быть сделано, или это просто случайные различия?

2
задан 2 April 2017 в 06:30

3 ответа

По-видимому, они используют разные локали для переменной среды LC_COLLATE, которая определяет «[h] ow строки (имена файлов ...) сортируются по алфавиту» (источник). Вы можете отобразить доступные локали для вашей системы с помощью locale -a. В следующем примере показано, как вы можете изменить параметр только для одной команды (файл test содержит ваши четыре примера имен файлов), мой подход состоял в том, чтобы поиграть с этим и определить при необходимости псевдонимы, такие как alias sort="LC_COLLATE=C sort":

> sort test # my system standard is LC_COLLATE=de_DE.UTF-8 flop_drop.jpg flop.jpg flop_nop.jpg flop_qrop.jpg > LC_COLLATE=C sort test flop.jpg flop_drop.jpg flop_nop.jpg flop_qrop.jpg

source к связанному вопросу дает хороший обзор локалей, где они определены и как вы можете их изменить.

Наутилус, однако, по-видимому, имеет ошибку ...

Edit

find похоже игнорирует ручную настройку LC_COLLATE:

> find . -name "flop*" # my system standard is LC_COLLATE=de_DE.UTF-8 ./flop.jpg ./flop_drop.jpg ./flop_qrop.jpg ./flop_nop.jpg > LC_COLLATE=de_DE.UTF-8 find . -name "flop*" ./flop.jpg ./flop_drop.jpg ./flop_qrop.jpg ./flop_nop.jpg > LC_COLLATE=en_EN.UTF-8 find . -name "flop*" ./flop.jpg ./flop_drop.jpg ./flop_qrop.jpg ./flop_nop.jpg

У меня нет абсолютно никакой идеи, почему она ведет себя таким образом, особенно потому, что bug перечисляет LC_COLLATE, как используется программой. Я остался безмолвным здесь.

0
ответ дан 18 July 2018 в 15:41

По-видимому, они используют разные локали для переменной среды LC_COLLATE, которая определяет «[h] ow строки (имена файлов ...) сортируются по алфавиту» (источник). Вы можете отобразить доступные локали для вашей системы с помощью locale -a. В следующем примере показано, как вы можете изменить параметр только для одной команды (файл test содержит ваши четыре примера имен файлов), мой подход состоял в том, чтобы поиграть с этим и определить при необходимости псевдонимы, такие как alias sort="LC_COLLATE=C sort":

> sort test # my system standard is LC_COLLATE=de_DE.UTF-8 flop_drop.jpg flop.jpg flop_nop.jpg flop_qrop.jpg > LC_COLLATE=C sort test flop.jpg flop_drop.jpg flop_nop.jpg flop_qrop.jpg

source к связанному вопросу дает хороший обзор локалей, где они определены и как вы можете их изменить.

Наутилус, однако, по-видимому, имеет ошибку ...

Edit

find похоже игнорирует ручную настройку LC_COLLATE:

> find . -name "flop*" # my system standard is LC_COLLATE=de_DE.UTF-8 ./flop.jpg ./flop_drop.jpg ./flop_qrop.jpg ./flop_nop.jpg > LC_COLLATE=de_DE.UTF-8 find . -name "flop*" ./flop.jpg ./flop_drop.jpg ./flop_qrop.jpg ./flop_nop.jpg > LC_COLLATE=en_EN.UTF-8 find . -name "flop*" ./flop.jpg ./flop_drop.jpg ./flop_qrop.jpg ./flop_nop.jpg

У меня нет абсолютно никакой идеи, почему она ведет себя таким образом, особенно потому, что bug перечисляет LC_COLLATE, как используется программой. Я остался безмолвным здесь.

0
ответ дан 24 July 2018 в 20:42

По-видимому, они используют разные локали для переменной среды LC_COLLATE, которая определяет «[h] ow строки (имена файлов ...) сортируются по алфавиту» (источник). Вы можете отобразить доступные локали для вашей системы с помощью locale -a. В следующем примере показано, как вы можете изменить параметр только для одной команды (файл test содержит ваши четыре примера имен файлов), мой подход состоял в том, чтобы поиграть с этим и определить при необходимости псевдонимы, такие как alias sort="LC_COLLATE=C sort":

> sort test # my system standard is LC_COLLATE=de_DE.UTF-8 flop_drop.jpg flop.jpg flop_nop.jpg flop_qrop.jpg > LC_COLLATE=C sort test flop.jpg flop_drop.jpg flop_nop.jpg flop_qrop.jpg

source к связанному вопросу дает хороший обзор локалей, где они определены и как вы можете их изменить.

Наутилус, однако, по-видимому, имеет ошибку ...

Edit

find похоже игнорирует ручную настройку LC_COLLATE:

> find . -name "flop*" # my system standard is LC_COLLATE=de_DE.UTF-8 ./flop.jpg ./flop_drop.jpg ./flop_qrop.jpg ./flop_nop.jpg > LC_COLLATE=de_DE.UTF-8 find . -name "flop*" ./flop.jpg ./flop_drop.jpg ./flop_qrop.jpg ./flop_nop.jpg > LC_COLLATE=en_EN.UTF-8 find . -name "flop*" ./flop.jpg ./flop_drop.jpg ./flop_qrop.jpg ./flop_nop.jpg

У меня нет абсолютно никакой идеи, почему она ведет себя таким образом, особенно потому, что bug перечисляет LC_COLLATE, как используется программой. Я остался безмолвным здесь.

0
ответ дан 31 July 2018 в 23:43

Другие вопросы по тегам:

Похожие вопросы: