У меня есть следующий список каталогов в системе Debian Linux. Однако одна странная вещь заключается в том, что файл populate.sql, похоже, не отсортирован с остальными.
-rw-r--r-- 1 user1 user1 10004 Jul 28 13:16 populate2.sql
-rw-r--r-- 1 user1 user1 10244 Jul 28 13:16 populate3.sql
-rw-r--r-- 1 user1 user1 10359 Jul 28 13:16 populate4.sql
-rw-r--r-- 1 user1 user1 11618 Jul 28 13:16 populate5.sql
-rw-r--r-- 1 user1 user1 11654 Jul 28 13:17 populate6.sql
-rw-r--r-- 1 user1 user1 12198 Jul 30 16:20 populate7.sql
-rw-r--r-- 1 user1 user1 12286 Aug 10 00:10 populate8.sql
-rw-r--r-- 1 user1 user1 12331 Aug 19 08:48 populate9.sql
-rw-r--r-- 1 user1 user1 12401 Aug 20 14:58 populatea.sql
-rw-r--r-- 1 user1 user1 12460 Aug 22 01:09 populateb.sql
-rw-r--r-- 1 user1 user1 12503 Aug 22 17:13 populatec.sql
-rw-r--r-- 1 user1 user1 13341 Aug 23 23:23 populated.sql
-rw-r--r-- 1 user1 user1 13414 Aug 27 23:01 populatee.sql
-rw-r--r-- 1 user1 user1 16064 Aug 31 00:03 populatef.sql
-rw-r--r-- 1 user1 user1 17529 Sep 16 15:38 populateg.sql
-rw-r--r-- 1 user1 user1 19348 Sep 19 22:50 populateh.sql
-rw-r--r-- 1 user1 user1 21033 Sep 27 20:46 populatei.sql
-rw-r--r-- 1 user1 user1 21024 Sep 28 00:02 populatej.sql
-rw-r--r-- 1 user1 user1 22505 Sep 28 22:55 populatek.sql
-rw-r--r-- 1 user1 user1 23831 Oct 5 21:24 populatel.sql
-rw-r--r-- 1 user1 user1 23665 Nov 2 22:16 populatem.sql
-rw-r--r-- 1 user1 user1 23513 Nov 4 21:53 populaten.sql
-rw-r--r-- 1 user1 user1 27191 Nov 19 14:55 populateo.sql
-rw-r--r-- 1 user1 user1 30142 Nov 28 17:51 populatep.sql
-rw-r--r-- 1 user1 user1 30853 Dec 10 14:49 populateq.sql
-rw-r--r-- 1 user1 user1 33690 Dec 11 23:43 populater.sql
-rw-r--r-- 1 user1 user1 9945 Jul 28 13:16 populate.sql
-rw-r--r-- 1 user1 user1 38696 Jan 16 22:27 populates.sql
-rw-r--r-- 1 user1 user1 38696 Jan 16 22:27 populatet.sql
Сначала я подумал, что это может быть из-за скрытого персонажа или чего-то еще, но я не могу думать о скрытом персонаже, который окажется между r и s. Кроме того, если я наберу vim populate.sql
в командной строке, он откроет правильный файл, который является еще одним доказательством того, что там нет странного символа.
Любые идеи, почему populate.sql
не сортируется правильно?
files
filesystems
filenames
sort
kojow7
источник
источник
ls
Версии разные.) Похоже, период игнорируется в целях сортировки, что интересно.Ответы:
LC_COLLATE
с любым сопоставлением с поддержкой Юникода, например,en_US.UTF-8
приводит к порядку сортировки, который игнорирует пунктуацию. Следовательно,populate.sql
сортирует какpopulatesql
после,populatersql
но преждеpopulatessql
.Если вы хотите, чтобы это поведение изменилось, попробуйте запустить его
LC_COLLATE=C ls -al
, и он будет отсортирован в порядке сортировки C (по определенным байтам без учета каких-либо кодовых точек или локалей).источник
/etc/default/locale
нем говоритсяLANG="en_US.UTF-8"
.