Можете ли вы отсортировать список ls по имени?
Unix 'ls' сортирует по имени
Ответы (12)
Мой 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.
:
ls
не сортируется, если указано -c1
: есть ли способ заставить его это сделать? (--sort=name
не работает)
- person dhc; 16.01.2015
ls -la
я вижу: .bashrc - can - .config - Downloads - .local - tmp
, сортировка по имени будет: .bashrc - .config - .local - Downloads - can - tmp
- person 12431234123412341234123; 14.08.2017
Для чего-то простого вы можете комбинировать ls с sort. Просто список имен файлов:
ls -1 | сортировать
Чтобы отсортировать их в обратном порядке:
ls -1 | сортировать -r
ls | sort -n
1.1.1; 1.1.2; 1.1.3; 2.10.1; 2.10.15; 2.10.2; 2.10.20; 2.10.21; 2.1.1; 2.1.10; 2.1.15; 2.1.2; 2.1.3; 2.1.4; 10.1.1; 10.1.2; 10.1.3; 11.0.1; 11.0.2; 11.0.20; 11.0.21; 11.0.22; Как видите, 2.10.15 до 2.10.2.
- person BBK; 14.02.2014
ls -1r
.
- person Ash Ryan Arnwine; 01.06.2016
ls
из coreutils
по умолчанию выполняет сортировку с учетом региональных настроек и, таким образом, в некоторых случаях может давать неожиданные результаты (например, %foo
будет сортировать между bar
и quux
в LANG=en_US
). Если вам нужна ASCIIбетическая сортировка, используйте
LANG=C ls
LANG
ilfnuance поведение сортировки, этот пост мне очень помог!
- person yurenchen; 21.06.2016
?
для каждого символа, отличного от ascii, когда вывод является терминалом (плохая функция от ls проверяет, выводится ли он на терминал, работает при передаче). Вы можете исправить это с помощью конвейера в cat, использовать локаль C.UTF-8
(если ваша система поддерживает ее) и/или использовать флаг -b
. А еще лучше вообще не использовать ls
, лучше использовать `
- person 12431234123412341234123; 05.09.2017
ls
сортирует дефисы перед тире.
- person Jamy Mahabier; 04.02.2020
Прелесть инструментов *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
к команде сортировки.
-k9,9
?
- person luckydonald; 06.12.2017
9
до такого же столбца 9
. Обычный вывод ls
выглядит так: drwx------ 8 999 user 4.0K Feb 5 2017 file.txt
, поэтому столбец 9 — это имена файлов. Если вы хотите игнорировать регистр, используйте --ignore-case
при сортировке.
- person luckydonald; 06.12.2017
Файлы, отличающиеся только числовой строкой, могут быть отсортированы по этому номеру при условии, что перед ним стоит разделитель.
В этом случае можно использовать следующий синтаксис:
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
ВНИМАНИЕ: «а» стоит ПОСЛЕ «Z»:
$ сенсорный A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
normal
здесь.
- person nyxee; 22.02.2017
Со страницы руководства (для bash ls):
Сортировать записи в алфавитном порядке, если ни одна из опций -cftuSUX или --sort.
which ls
удалось бы, даже если бы в bash был встроенный ls. Скорее сделайте builtin ls
в bash, и получите ошибку.
- person Pianosaurus; 18.05.2009
which
всегда возвращает путь. Используйте type ls
, чтобы определить, что оболочка считает ls
(встроенным, функциональным, исполняемым).
- person ephemient; 18.05.2009
Утилита ls
должна соответствовать стандарту IEEE Std 1003.1-2001 (POSIX.1
) в котором говорится:
22027: он должен сортировать операнды каталога и операнды, не относящиеся к каталогу, отдельно в соответствии с последовательностью сортировки в текущей локали.
26027: По умолчанию формат не указан, но вывод должен быть отсортирован в алфавитном порядке по имени символа:
- Имя библиотеки или объекта, если указано -A
- Имя символа
- Тип символа
- Значение символа
- Размер, связанный с символом, если применимо
Проверьте свой файл .bashrc
на наличие псевдонимов.
alias
, чтобы проверить все текущие псевдонимы.
- person Krzysztof Jabłoński; 07.04.2015
ls -X работает для этой цели, если вы применили псевдоним ls к более полезному значению по умолчанию.
Можешь попробовать:
ls -lru
-u с -lt: сортировать и показывать время доступа;
Я получил содержимое каталога, отсортированного по имени, используя следующую команду:
ls -h