Список каталогов, начиная с каталогов с точкой, затем с файлами с точкой

Список каталогов, начиная с каталогов с точкой, затем с файлами с точкой

Я знаю о такой lsвозможности --group-directories-first, но это не совсем то, чего я хочу добиться.

Вывод должен быть следующим: (отсортировано по имени ASC)

  • Каталоги
  • Скрытые каталоги
  • Скрытые файлы

решение1

С GNU ls( -Uопция, позволяющая lsне сортировать список файлов, является расширением GNU):

ls -lUd -- *(/) .*(/) .*(^/)

Проблема в том, что если какой-либо из этих шаблонов не совпадет, команда будет отменена, поэтому вы можете сделать следующее:

myls() (
  setopt cshnullglob
  ls -lUd -- *(/) .*(/) .*(^/)
)

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

Обратите внимание, что zshшары никогда не расширяются .и .., поэтому эти два объекта никогда не будут включены.

Связанный контент