По умолчанию команда ls сортирует только по имени файла, но я хочу, чтобы каталоги появлялись раньше других типов файлов. Я мог бы даже хотеть, чтобы файлы сортировались по расширению, например, как проводник Windows сортирует по столбцу типа. Есть ли способ сделать что-то похожее с ls?
44
--sort=extension
и--group-directories-first
(или только--group-directories
) отлично работает для меня в Ubuntu 12.10. Стоит попробовать и на твоей машине тоже! =)-X / --sort=extension
с--group-directories-first
чем-либо еще, что я пробовал на современных дистрибутивах Linux. OP ссылается на Fedora Core 8 (выпущена в 2007 году), поэтому есть вероятность, что такие проблемы в далеком прошлом.В Linux
(
man ls
твой друг!)источник
gls --group-directories-first
на Mac, если вы устанавливаетеGNU Core utils
поверх homebrew-X - это вариант, который вы ищете:
источник
На bash это будет работать:
От
man rev
:Итак, 1. ls выдает свои выходные данные с любыми нужными флагами 2. каждая строка переворачивается 3. затем они сортируются 4. и снова переворачиваются 5. вот так:
Или, более конкретно, как показано ниже. Они сортируются по последнему символу, затем следуют за последним и т. Д. Все файлы .rtf, например, перечислены вместе, после файла .save и другого файла без расширения, имя которого заканчивается на «e». Затем приходят файлы .png и так далее. Это также будет работать с ls -l, потому что расширение обычно является последним в строке (исключение, если у вас есть такие строки, как «tmp @ -> / home / jones / tmp», где за ссылками следуют их цели).
источник
ls -F
-F
), если бы он проходил через негоrev
иsort
не раздевал цвет (-G
).Если вы не на Linux,
следует сначала отсортировать каталоги (дайте мне знать, если я ошибаюсь). Однако сортировка по расширению не производится: если вы хотите сделать это, вы должны сделать оператор awk намного более занятым ...
Чтобы заставить его работать с именами, содержащими пробелы, я бы, вероятно, заменил awk чем-то вроде
sed -E -e 's/([^ ]+[ ]+){8}//'
удаления первых 8 полей вместо печати 9-го.источник
CLICOLOR
включили это, удалит окраску.sed -E -e 's/([^ ]+[ ]+){8}//'
первых 8 полей вместо печати 9-гоls -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-
Если вы работаете в Linux, GNU
ls
поддерживает--sort
опцию: -источник
Хорошим подходом является сначала разделение папок , а затем сортировка файлов по расширениям путем сортировки и обратного вывода:
источник
Я добавил в мой .bashrc (linux) строку
таким образом я просто набираю lx и сортирую его по расширению.
источник
ls -X
:)