Як спочатку перерахувати папки з підкресленнями?


23

Отже, як майже всі, перед тим, як користуватися Ubuntu, я використовував машину Windows, і однією з речей, до яких я звик в Windows, було використання підкреслення як першого символу імені папки як якесь спеціальне маркування, щоб це було з'являються спочатку в списку, як у командному рядку, так і у файлі Explorer.

Наприклад, у моїй папці "Електронні книги" (у Windows) виглядає приблизно так:

_read
      Book1.pdf
      Book2.pdf
_reading
      Book3.pdf
Book4.pdf
Book5.pdf

але в Nautilus Ubuntu це виглядає приблизно так:

Book4.pdf
Book5.pdf    
_read
      Book1.pdf
      Book2.pdf
_reading
      Book3.pdf

Що відбувається, це те, що він повністю ігнорує підкреслення, і він трактує "_read" як "прочитаний", а тому не спочатку перераховує його як бажане.

Я спробував встановити змінну середовища LC_COLLATE на C. Це допомагає якось, оскільки вона перераховує підкреслення разом, але в кінці, а не на початку.

Спасибі.


Ви можете включити скріншот?
філшем

Можливий дублікат askubuntu.com/questions/115741/…, хоча я думаю, що відповідь @ maggotbrain є кращою, ніж представлена ​​там.
rudivonstaden

Відповіді:


16

Оскільки ви не вказали локаль, який ви зараз використовуєте, це рішення передбачає, що ви використовуєте en_US.UTF-8його за замовчуванням.

Ви можете перевірити це, виконавши команду localeз командного рядка ( Ctrl+ Alt+ t).

Наприклад:

~ $ locale
LANG=en_US.UTF-8
LANGUAGE=en_US
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

Змінна, яка впливає на порядок сортування файлів, називається LC_COLLATE .

Відповідно до довідкових сторінок Ubuntu , змінна LC_COLLATE визначає "Як рядки (назви файлів ...) впорядковані за алфавітом. Використання локалі" C "або" POSIX "тут призводить до strcmp () - порядку упорядкування, який може бути бажано для мов, що відповідають конкретній мові. "

Порядок сортування потрібно буде змінити з LC_COLLATE="en_US.UTF-8"на LC_COLLATE=C.

У командному рядку ( Ctrl+ Alt+ t) введіть:

update-locale LC_COLLATE=C

Важливо: Вам потрібно вийти із системи, а потім увійти в систему, щоб зміни вступили в силу .

Запустивши localeкоманду ще раз, це повинно показати, що LC_COLLATEзмінна була успішно змінена. Запуск команди ls -lзнову повинен відображати цю зміну.


1
Я вже встановив LC_COLLATE на C, як я описав в останньому абзаці свого запитання. Тим не менш, я отримую різні результати як в терміналі, так і в наулірусі, і тим часом перезавантажив комп'ютер. Будь-яка ідея, чому це відбувається?
nunos

@nunos ви якісь - або псевдоніми набір для lsв вашої .bashrc?
Кевін Боуен

@nunos Цікаво. На якому типі файлових систем ви це перевіряєте? Єдине місце, в якому я маю проблеми зі ls -lсортуванням, - це диск, відформатований на ntfs, який, можливо, не вшановує змінну LC_COLLATE. Усі мої файлові системи ext3 відповідають цим параметрам за допомогою команди ls, а також у Thunar та Nautilus.
Кевін Боуен

це може бути дуже проблемою. Я використовую ls -lкоманду на диску NTFS, оскільки у мене є подвійне завантаження з windows.
nunos

2
update-locale LC_COLLATE=Cне допомагає отримати папки з підкресленнями у верхній частині відсортованого списку, якщо ви використовуєте великі літери на початку назв вашої папки!
malisokan

1

caja (і я думаю, що Nautilus раніше) має в налаштуваннях параметри сортування папок перед файлами. Чи допоможе це?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.