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

Мне нравится указывать файлы и каталоги с префиксом подчеркивания, если это то, что я хочу сохранить отдельно от других файлов и каталогов на одном уровне. Например, в Windows и Mac префикс файла с подчеркиванием сортирует его вверху, перед файлами, начинающимися с буквенно-цифрового символа.

Мой googling выяснил, что это связано с LC_COLLATE и моей текущей локалью (en_US). Все в порядке, хотя я действительно не понимаю, почему en_US не сортируется так, как ожидалось.

На основе определения места установки демонстрационного сайта ICU Collate для en_US_POSIX, безусловно, есть порядок сортировки, который я ищу (вам нужно отредактировать данные образца и добавить некоторые подчеркивания, чтобы проверить его). Но я действительно не вижу, как применить это в своей оболочке Linux.

В идеале я хотел бы создать что-то в моей конфигурации bash, чтобы сначала сортировать символы подчеркивания. Как мне это сделать?

4 Solutions collect form web for “Как мне сначала сделать символы подчеркивания ls?”

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

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

 ls -lf _* [!_]* 

Предполагая, что у вас есть файлы

 _a a _b b _c c 

это похоже на бег

 ls -lf _a _b _c abc 

Объяснение:

_* – это шаблон оболочки, соответствующий любому имени файла, начинающемуся с подчеркивания, расширенным в алфавитном порядке.

[!_]* соответствует любому имени файла, которое не начинается с подчеркивания, расширенного в алфавитном порядке.

-f говорит ls не сортировать, потому что оболочка уже сделала.

Дополнительная информация: расширение имени файла bash

Если в текущем каталоге есть каталоги, вы захотите запустить такую ​​команду, чтобы избежать перебора файлов ls в каталогах:

 ls -lfd _* [!_]* 

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

 $ LC_COLLATE=C ls BAR FOO _score _under hello world $ LC_COLLATE=en_US ls BAR FOO hello _score _under world 

Настройки локали LC_MESSAGES (язык сообщений об ошибках), LC_CTYPE (наборы символов) и LC_TIME (формат даты и времени) полезны. LC_COLLATE и LC_NUMERIC обычно больше проблем, чем они того стоят, я не рекомендую их устанавливать. Правильная лексикографическая сортировка более сложна, чем предполагается указать LC_COLLATE , и она может вызывать все виды странного поведения, когда вы используете диапазоны символов в регулярных выражениях. LC_NUMERIC в основном косметический, за исключением случаев, когда что-то идет ужасно неправильно, потому что какая-то программа произвела число с десятичным разделителем, отличным от . ,

К сожалению, Linux использует glibc для своей информации о локали, а не для ICU, поэтому нет никакого способа напрямую применить это к Linux, не затрачивая при этом больших усилий либо переоборудовать ICU в glibc, либо дополнять информацию локали в glibc.

Добавление -f переключателя (без сортировки) заставило его показать этот путь для меня.

man ls

 [root@dusknoir ~/java/test]# ls -fl total 0 -rw-r--r-- 1 root wheel 0 Jun 1 13:27 _1 -rw-r--r-- 1 root wheel 0 Jun 1 13:27 _2 -rw-r--r-- 1 root wheel 0 Jun 1 13:27 _3 -rw-r--r-- 1 root wheel 0 Jun 1 13:27 1 -rw-r--r-- 1 root wheel 0 Jun 1 13:27 2 -rw-r--r-- 1 root wheel 0 Jun 1 13:27 3 
  • Сортировка jpg в соответствии с датой создания и конвертирование в одиночный pdf
  • Насколько разумны утилиты unix?
  • Присоединить два несортированных файла к POSIX?
  • Сортировка «последнего» результата по месяцам
  • Помогите мне понять, что здесь делает
  • Самый простой способ подсчета строк, соответствующих определенным шаблонам, включая «0», если строка не найдена?
  • заказ на листинг файлов
  • Сортировка .csv файла по алфавиту не работает правильно, когда есть дефис
  • Порядок сортировки для заказа этого списка в определенном порядке
  • Сортировка точек монтирования по времени монтирования
  • Как изменить сортировку результата из grep -rc
  • Linux и Unix - лучшая ОС в мире.