Unix 'ls' сортировать по названию

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

Ответ 1

Мой 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. :

Ответ 2

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

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

Ответ 3

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

LANG=C ls

Ответ 4

Красота инструментов * 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 в команду сортировки.

Ответ 5

УВЕДОМЛЕНИЕ: "a" появляется ПОСЛЕ "Z":

$touch A.txt aa.txt Z.txt

$ls

A.txt Z.txt aa.txt

Ответ 6

На странице man (для bash ls):

Сортировка записей в алфавитном порядке, если ни один из -cftuSUX или --sort.

Ответ 7

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

Ответ 8

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

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

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

Ответ 9

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

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

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

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

Ответ 10

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

Ответ 11

In Debian Jessie, this works nice:

ls -lah --group-directories-first

# l=use a long listing format
# a=do not ignore entries starting with .
# h=human readable
# --group-directories-first=(obvious)
# Note: add -r for reverse alpha

# You might consider using lh by appending to ~/.bashrc as the alias:
~$ echo "alias lh='ls -lah --group-directories-first'" >>~/.bashrc
# -- restart your terminal before using lh command --