Как сделать ls
сортировку по типу файла (например, сначала по каталогам, а затем по расширению)? Ответы, предложенные в (Super User), заставляют сортировку ls по типу файла приводить к неизвестным ошибкам опций ls
.
Как сделать ls
сортировку по типу файла (например, сначала по каталогам, а затем по расширению)? Ответы, предложенные в (Super User), заставляют сортировку ls по типу файла приводить к неизвестным ошибкам опций ls
.
Ответы:
Как вы узнали, дарвиновская версия 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 тем, как они ведут себя, настолько, что они могут испортить другие вещи в вашей сессии оболочки. Так что делайте это с осторожностью.
Основываясь на ответе в связанной статье Super User :
ls -l |sort -d -k 1.1,1.1r -k 9 | cut -c 50-
Если вы хотите увидеть весь результат ls -l
, просто пропустите cut
часть.
/bin/ls
.