Выполните сортировку команды ls по типу файла (например, по каталогам и расширению файла)

15

Как сделать lsсортировку по типу файла (например, сначала по каталогам, а затем по расширению)? Ответы, предложенные в (Super User), заставляют сортировку ls по типу файла приводить к неизвестным ошибкам опций ls.

Комплект
источник
2
Незначительные исправления в отношении вашего заголовка: ls не является командой bash; это отдельный исполняемый файл, расположенный по адресу /bin/ls.
Bneely

Ответы:

21

Как вы узнали, дарвиновская версия lsкоманды не поддерживает эту -X | --sort=extensionопцию. Эта опция уникальна для версии GNU ls.

Вы можете получить версию GNU lsдля вашей системы. Самый простой способ сделать это через менеджер пакетов Homebrew и систему портирования. С Homebrew установлено сделать:

brew install coreutils

добавить пакет GNU Core Utilities в вашу систему. Все утилиты будут иметь префикс, gчтобы они не вступали в конфликт со стандартными утилитами Darwin, с которыми поставляется OS X.

Установив GNU Core Utilites, вы можете:

gls -X

И вы увидите результат, отсортированный по вашему желанию.

Если вы хотите использовать GNU Core Utils вместо утилит, поставляемых с OS X, вы можете поместить в свой ~/.bashrcфайл следующую строку :

source /usr/local/Cellar/coreutils/8.14/aliases

И вам больше не нужно использовать gпрефикс в командах. Я скажу, что это не совсем безопасно, поскольку некоторые утилиты GNU отличаются от встроенных функций bash и инструментов Darwin тем, как они ведут себя, настолько, что они могут испортить другие вещи в вашей сессии оболочки. Так что делайте это с осторожностью.

Ян С.
источник
1

Основываясь на ответе в связанной статье Super User :

ls -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-

Если вы хотите увидеть весь результат ls -l, просто пропустите cutчасть.

Nohillside
источник