Как мне сначала перечислить папки с подчеркиванием?

23

Поэтому, как и почти всем, до использования Ubuntu я использовал машину с Windows, и одна из вещей, к которой я привык в Windows, - это использовать подчеркивание в качестве первого символа имени папки в качестве какой-то особой маркировки, чтобы она была появляются в начале списка, как в командной строке, так и в файловом менеджере.

Например, в моей папке электронных книг (в Windows) выглядит примерно так:

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

но в Ubuntu Nautilus это выглядит так:

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

Что происходит, так это то, что он полностью игнорирует подчеркивание и обрабатывает «_read» как «read» и, следовательно, не перечисляет его в начале, как хотелось бы.

Я попытался установить переменную окружения LC_COLLATE в C. Это помогает как-то, так как он перечисляет подчеркивание вместе, но в конце, а не в начале.

Спасибо.

nunos
источник
Можете ли вы включить скриншот?
philshem
Возможный дубликат 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, как я описал в последнем абзаце моего вопроса. Тем не менее, я получаю разные результаты как в терминале, так и в nautilus explorer, и тем временем я перезагрузил компьютер. Есть идеи, почему это происходит?
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 до него) есть опция в настройках для сортировки папок перед файлами. Это поможет?

Desconocido
источник