Unix 'ls' сортировка по имени - PullRequest
109 голосов
/ 18 мая 2009

Можете ли вы отсортировать список ls по имени?

Ответы [ 11 ]

119 голосов
/ 18 мая 2009

My ls сортирует по имени по умолчанию. Что ты видишь?

man ls состояния:

List information about the FILEs (the current directory by default). Sort entries alpha‐betically if none of -cftuvSUX nor --sort is specified.

94 голосов
/ 18 мая 2009

Для чего-то простого, вы можете объединить ls с sort . Просто для списка имен файлов:
ls -1 | сортировать

Чтобы отсортировать их в обратном порядке:
ls -1 | сортировка -r

30 голосов
/ 26 августа 2013

ls из coreutils выполняет сортировку с учетом *1003* по умолчанию и, таким образом, может давать неожиданные результаты в некоторых случаях (например, %foo будет сортировать между bar и quux в LANG=en_US). Если вы хотите ASCIIbetical сортировать, используйте

LANG=C ls
17 голосов
/ 10 января 2011

Прелесть * инструментов nix в том, что вы можете комбинировать их:

ls -l | sort -k9,9

Вывод ls -l будет выглядеть так

-rw-rw-r-- 1 luckydonald luckydonald  532 Feb 21  2017 Makefile
-rwxrwxrwx 1 luckydonald luckydonald 4096 Nov 17 23:47 file.txt

То есть с 9,9 вы сортируете столбец 9 до столбца 9, являющегося именами файлов. Вы должны указать, где остановиться, это тот же столбец в данном случае. Столбцы начинаются с 1.

Также, если вы хотите игнорировать прописные / строчные буквы, добавьте --ignore-case к команде сортировки.

8 голосов
/ 31 октября 2009

УВЕДОМЛЕНИЕ: «а» приходит после «Z»:

$ touch A.txt aa.txt Z.txt

$ ls

A.txt Z.txt aa.txt

4 голосов
/ 18 мая 2009

со страницы руководства (для bash ls):

Сортировать записи по алфавиту, если ни -cftuSUX, ни --sort.

3 голосов
/ 15 апреля 2016

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

В этом случае может использоваться следующий синтаксис:

ls -x1 file | sort -t'<char>' -n -k2

Пример:

ls -1 TRA*log | sort -t'_' -n -k2

TRACE_1.log
TRACE_2.log
TRACE_3.log
TRACE_4.log
TRACE_5.log
TRACE_6.log
TRACE_7.log
TRACE_8.log
TRACE_9.log
TRACE_10.log
3 голосов
/ 13 апреля 2015

Утилита ls должна соответствовать стандарту IEEE 1003.1-2001 (POSIX.1), в котором указано:

22027: он должен сортировать каталоги и не-каталогные операнды отдельно в соответствии с последовательностью сортировки в текущей локали.

26027: по умолчанию формат не указан, но выходные данные должны быть отсортированы в алфавитном порядке по имени символа:

  • Имя библиотеки или объекта, если указан -A
  • Название символа
  • Тип символа
  • Значение символа
  • Размер, связанный с символом, если применимо
3 голосов
/ 01 июля 2010

Проверьте ваш файл .bashrc на наличие псевдонимов.

1 голос
/ 03 апреля 2018

ls -X работает для этой цели, если вы установили псевдоним ls для более полезного значения по умолчанию.

...