Если он не сортируется по имени без каких-либо аргументов, вы можете проверить, был ли ls связан с чем-то другим, или просто вызвать его, используя полный путь, что устранит любые существующие псевдонимы.
tvanfosson
gnu-coreutils ls сортирует по умолчанию. Какую систему вы используете (как спрашивают другие)
Ник Фортескью
Вы уверены, что просите сортировать по имени, а не по типу (т.е. сначала каталог, а затем файлы) ??
curtisk
Заглавные буквы идут перед строчными, таким образом, файл Z идет перед файлом a ... как это исправить?
ArtOfWarfare
На странице руководства написано «отсортировано отдельно и в лексикографическом порядке». Файлы сортируются по первому символу: числовые [0..9] и ВЕРХНИЕ символы [A..Z] и нижние символы [a..z]
Гюрол Канбек
Ответы:
131
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.:
lsне сортирует, если -c1указано: есть ли способ сделать это? ( --sort=nameпохоже, не работает)
dhc
1
Это неправда. с ls -la, я вижу:, .bashrc - can - .config - Downloads - .local - tmpсортировка будет имя будет:.bashrc - .config - .local - Downloads - can - tmp
12431234123412341234123
1
мой говорит, что 100.jpg предшествует 10.jpg. Думаю, имеет смысл, если "0" стоит перед "". но это все еще не интуитивно
понятно
Я вижу букву «М» перед буквой «б». Смущенный. Подождите, а заглавные буквы имеют значение?
Дэниел Спрингер
106
Для чего-то простого вы можете комбинировать ls с sort . Просто список имен файлов: ls -1 | Сортировать
Чтобы отсортировать их в обратном порядке: ls -1 | sort -r
Есть ли способ отсортировать файлы так: ls | sort -n1.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 .
BBK
Я занимаюсь разработкой для Android на устройстве Pidion, и ls не выполняет автоматическую сортировку, так что это было очень полезно! Единственная проблема в том, что похоже, что он сортирует мягкие ссылки, но по какой-то причине не сортирует файлы
Митч
На Mac похоже, что вторую команду можно сократить до ls -1r.
Эш Райан Арнвин, 01
4
@BBK sort -V отсортирует по номерам версий, поэтому вы получите .. 2.10.2; 2.10.15; .. from man sort .. --sort = WORD будет сортировать по WORD: общее-числовое -g, человеческое-числовое -h, месяц -M, числовое -n, случайное -R, версия -V
mosh
35
lsfrom по умолчанию coreutilsвыполняет сортировку с учетом локали и, таким образом, в некоторых случаях может давать неожиданные результаты (например, %fooсортировка между barи quuxвнутри LANG=en_US). Если вам нужна сортировка ASCIIbetical, используйте
LANGИллюстрируя поведение сортировки, этот пост мне очень помог!
yurenchen
Это сработало и для меня. не могли бы вы подробнее рассказать об этом? Почему сортировка по-другому?
Костас
1
Эта доза работает, но выводится ?для каждого символа, отличного от ascii, когда вывод является терминалом (плохая функция от ls проверяет, выводится ли он на терминал, работает при конвейере). Вы можете «исправить» это с помощью piping to cat, использовать C.UTF-8локаль (если ваша система поддерживает это) и / или использовать -bфлаг. Еще лучше, не использовать lsвообще, лучше использовать `
12431234123412341234123 05
Это помогло мне обнаружить, что для меня проблема заключалась в том, что некоторые из моих имен файлов содержали дефис (-), а некоторые - короткое тире (-). lsсортирует дефис перед дефисом.
Джейми Махабьер,
17
Прелесть инструментов * 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в команду сортировки.
Обнаружил, значит отсортировать столбец 9до такого же столбца 9. Нормальный lsвывод выглядит так:, drwx------ 8 999 user 4.0K Feb 5 2017 file.txtпоэтому в столбце 9 указаны имена файлов. Если вы хотите игнорировать регистр, используйте --ignore-caseпри сортировке.
Это не всегда верно. Я точно не знаю обстоятельств, которые делают это неверным, но на моей машине с Ubuntu 12.04 вывод ls сортируется в алфавитном порядке (без учета регистра).
Патрик Джеймс Макдугл,
Хороший улов! Похоже, он упорядочивает это на основе кода ASCII .. За алфавитами верхнего регистра следует нижний регистр ..
Кент Павар
1
Я заметил, что моя MacOS сортирует сначала цифры, затем прописные буквы, затем подчеркивание, а затем строчные буквы. Забавно, что они не чувствительны к регистру. С другой стороны, мой Debian чувствителен к регистру, но сортирует буквы нечувствительно, если нет равных, тогда побеждает строчная буква! Пример: ABA.txt ABb.txt aBC.txt AbC.txt ABc.txt
zk82
Я тоже на MAC. Я был разочарован, увидев сортировку A, Z, a, z. Я здесь, потому что предпочитаю иметь А, А, Я, А. спасибо за совет. попробую normalрешения здесь.
nyxee
8
Файлы, отличающиеся только числовой строкой, могут быть отсортированы по этому номеру при условии, что ему предшествует разделитель.
В этом случае можно использовать следующий синтаксис:
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 --
Ответы:
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.
:источник
ls
не сортирует, если-c1
указано: есть ли способ сделать это? (--sort=name
похоже, не работает)ls -la
, я вижу:,.bashrc - can - .config - Downloads - .local - tmp
сортировка будет имя будет:.bashrc - .config - .local - Downloads - can - tmp
Для чего-то простого вы можете комбинировать ls с sort . Просто список имен файлов:
ls -1 | Сортировать
Чтобы отсортировать их в обратном порядке:
ls -1 | sort -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 .ls -1r
.ls
from по умолчаниюcoreutils
выполняет сортировку с учетом локали и, таким образом, в некоторых случаях может давать неожиданные результаты (например,%foo
сортировка междуbar
иquux
внутриLANG=en_US
). Если вам нужна сортировка ASCIIbetical, используйтеисточник
LANG
Иллюстрируя поведение сортировки, этот пост мне очень помог!?
для каждого символа, отличного от ascii, когда вывод является терминалом (плохая функция от ls проверяет, выводится ли он на терминал, работает при конвейере). Вы можете «исправить» это с помощью piping to cat, использоватьC.UTF-8
локаль (если ваша система поддерживает это) и / или использовать-b
флаг. Еще лучше, не использоватьls
вообще, лучше использовать `ls
сортирует дефис перед дефисом.Прелесть инструментов * nix в том, что их можно комбинировать:
Результат
ls -l
будет выглядеть такИтак,
9,9
вы сортируете столбец9
до столбца9
, являющегося именами файлов. Вы должны указать, где остановиться, в данном случае это тот же столбец. Столбцы начинаются с1
.Кроме того, если вы хотите игнорировать верхний / нижний регистр, добавьте
--ignore-case
в команду сортировки.источник
-k9,9
значит?9
до такого же столбца9
. Нормальныйls
вывод выглядит так:,drwx------ 8 999 user 4.0K Feb 5 2017 file.txt
поэтому в столбце 9 указаны имена файлов. Если вы хотите игнорировать регистр, используйте--ignore-case
при сортировке.ВНИМАНИЕ: "a" идет ПОСЛЕ "Z":
$ touch A.txt aa.txt Z.txt
$ ls
A.txt Z.txt aa.txt
источник
normal
решения здесь.Файлы, отличающиеся только числовой строкой, могут быть отсортированы по этому номеру при условии, что ему предшествует разделитель.
В этом случае можно использовать следующий синтаксис:
Пример:
источник
На странице руководства (для bash ls):
источник
which ls
все получилось бы, даже если бы в bash была встроенная ls. Скорее сделайтеbuiltin ls
в bash и получите ошибку.which
всегда возвращает путь. Используетсяtype ls
для определения того, что думает оболочкаls
(встроенная, функция, исполняемый файл).ls
Утилита должна соответствовать IEEE Std 1003.1-2001 (POSIX.1
) , который гласит:источник
Проверьте свой
.bashrc
файл на псевдонимы.источник
alias
чтобы проверить все текущие псевдонимы.ls -X подходит для этой цели, если вы установили псевдоним ls на более полезное значение по умолчанию.
источник
источник