Я не знаю ни одной локали, которая по умолчанию сортирует в таком порядке. Решение состоит в том, чтобы создать пользовательскую локаль с настраиваемым порядком сортировки. Если кто-то четыре года спустя захочет отсортировать по индивидуальному заказу, вот хитрость.
Подавляющее большинство локалей не определяют свой собственный порядок сортировки, а скорее копируют порядок сортировки, определенный в /usr/share/i18n/locales/iso14651_t1_common
, так что это то, что вы захотите отредактировать. Вместо того, чтобы менять порядок сортировки почти для каждой локали, модифицируя оригинал iso14651_t1_common
, я предлагаю вам сделать копию. Подробности о том, как работает порядок сортировки и как создать пользовательскую локаль в вашем каталоге $HOME
без root-доступа, можно найти в этом ответе на аналогичный вопрос .
Посмотрите, как a
и A
упорядочены на основе их записей вiso14651_t1_common
:
;;;IGNORE # 198 a
;;;IGNORE # 517 A
b
и B
аналогичны:
;;;IGNORE # 233 b
;;;IGNORE # 550 B
Мы видим, что при первом проходе a
и A
имеют совпадающий символ , а
b
и B
имеют совпадающий символ . Поскольку
появляется перед
в
iso14651_t1_common
, a
и A
связаны перед b
и B
. Второй проход не нарушает совпадения, потому что все четыре символа имеют символ сортировки
, но во время третьего прохода ничьи разрешаются, потому что символ сопоставления для строчных букв
появляется в строке 3467 перед символом сопоставления для прописные буквы
(строка 3488 ). Таким образом, порядок сортировки заканчивается как a
, A
, b
, B
.
Если поменять местами первый и третий символы сортировки, буквы будут отсортированы сначала по регистру (ниже, затем по верхнему ), затем по диакритическому знаку(
означает, что -без диакритического знака ), затем по алфавиту. Однако , как
, так и
стоят перед числовыми цифрами, так что это может привести к нежелательному эффекту размещения цифр после букв.
Самый простой способ оставить цифры первыми при установке всех строчных букв перед всеми прописными буквами — заставить все буквы совпадать во время первого сравнения, установив для них равные . Чтобы убедиться, что они сортируются по регистру в алфавитном порядке, измените последний символ сортировки с
IGNORE
на текущий первый символ сортировки. Следуя этому шаблону, a
станет:
;;; # 198 a
A
станет:
;;; # 517 A
b
станет:
;;; # 233 b
B
станет:
;;; # 550 B
и так далее для остальных букв.
После того, как вы создали настроенную версию iso14651_t1_common
, следуйте инструкциям в ответе, указанном выше , чтобы скомпилировать свою пользовательскую локаль.
Честно говоря, это не совсем ответ, потому что это своего рода хакерский способ получения результатов, которые вы запрашиваете. Итак, вот что:
Если вы уберете команду --append-verify
и замените ее командой --update
, оставьте все остальные параметры и запустите RSYNC без Это.
Это приведет к удалению всех исходных файлов при копировании файлов, которые были изменены.