ls -l – групповые каталоги – сначала (действуют также на символические ссылки)

ls option --group-directories-first заставляет каталоги перечисляться сверху, что делает вывод ls приятным и чистым:

 ls -l --group-directories-first 

Однако он не действует на symlinks , которые на самом деле являются symlinks на каталоги. Существует возможность использовать

 ls -l -L --group-directories-first 

в котором будут перечислены оба типа каталогов сверху, но не будет различать правильную директорию и символическую директорию, которая снова запутывает.

Может ли показывать отображаемые символические каталоги сверху, сохраняя при этом их отличные от обычных каталогов?

EDIT: Я использую bash .

  • Доступ к элементу случайного массива в ZSH
  • Как написать настраиваемое имя файла для конкретных каталогов в zsh?
  • Как реализовать «генераторы», такие как $ RANDOM?
  • Получить коды сканирования в восьмеричном формате
  • Функция Zsh с su и echo
  • Что означает: $ {param: = значение} означает?
  • Автоматически помещать псевдоним в ~ / .bashrc или ~ / .zshrc
  • Подсчет файлов в листах дерева каталогов
  • One Solution collect form web for “ls -l – групповые каталоги – сначала (действуют также на символические ссылки)”

    Нет, но если вы используете zsh , вы можете сделать:

     mll() { (($#)) || set -- *(N-/) *(N^-/) (($#)) && ls -ldU -- $@ } 

    Вы также можете определить порядок сортировки глобусов, например:

     dir1st() { [[ -d $REPLY ]] && REPLY=1-$REPLY || REPLY=2-$REPLY;} 

    и используйте его так:

     ls -ldU -- *(o+dir1st) 

    Таким образом, вы можете использовать его для других команд, чем ls или ls с разными параметрами, или для разных шаблонов, таких как:

     ls -ldU -- .*(o+dir1st) # to list the hidden files and dirs 

    или:

     ls -ldU -- ^*[[:lower:]]*(o+dir1st) # to list the all-uppercase files and dirs 

    Если вам нужно использовать bash , эквивалент будет выглядеть так:

     mll() ( if (($# == 0)); then dirs=() others=() shopt -s nullglob for f in *; do if [[ -d $f ]]; then dirs+=("$f") else others+=("$f") fi done set -- "${dirs[@]}" "${others[@]}" fi (($#)) && exec ls -ldU -- "$@" ) 

    bash не имеет квалификаторов globbing или любого способа повлиять на порядок сортировки глобусов или каким-либо образом превратить nullglob на основе каждого шага или иметь локальный контекст для параметров (кроме запуска подоболочки, следовательно, вместо () вместо {} выше) AFAIK.

    Interesting Posts

    База данных: 0403-009 Указанное число недопустимо для этой команды

    Есть ли способ просмотра вывода консоли вместо загрузочного логотипа, в то время как моя машина RHEL 6.2 загружается?

    Определите, работает ли рабочий каталог Git из сценария

    Arch и Windows 7 с двойной загрузкой с шифрованием, заменяя существующую установку Linux

    Как написать вывод на экран из службы systemd во время загрузки?

    Почему SSH сообщает о возможности «человек-в-середине» с разными типами ключей?

    Процесс загрузки – изменения имени файла sdx

    X высокий процессор при использовании приложений Java

    Объединение строк в одну строку

    Как начать x11vnc через сокет (т. Е. Только при необходимости)

    найти каталоги, не содержащие файл

    найти X, но исключить их?

    rsyslog7 фильтрует имя хоста, если не соответствует регулярному выражению

    Замораживание системы при настройке alsa

    Как получить доступ к передаче данных за NAT с внешнего ПК

    Linux и Unix - лучшая ОС в мире.