Можете ли вы отсортировать список ls по имени?
Unix '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 --