Я знаю о такой ls
возможности --group-directories-first
, но это не совсем то, чего я хочу добиться.
Вывод должен быть следующим: (отсортировано по имени ASC)
- Каталоги
- Скрытые каталоги
- Скрытые файлы
решение1
С GNU ls
( -U
опция, позволяющая ls
не сортировать список файлов, является расширением GNU):
ls -lUd -- *(/) .*(/) .*(^/)
Проблема в том, что если какой-либо из этих шаблонов не совпадет, команда будет отменена, поэтому вы можете сделать следующее:
myls() (
setopt cshnullglob
ls -lUd -- *(/) .*(/) .*(^/)
)
Это имитирует csh
поведение, при котором глобусы без соответствий расширяются в ничто, пока в команде есть хотя бы один глобус, который расширяется во что-то.
Обратите внимание, что zsh
шары никогда не расширяются .
и ..
, поэтому эти два объекта никогда не будут включены.