Listar diretórios com diretórios de ponto por último e depois arquivos de ponto

Listar diretórios com diretórios de ponto por último e depois arquivos de ponto

Estou ciente da lsopção --group-directories-first, mas não é exatamente isso que quero alcançar.

A saída deve ser: (classificado por nome ASC)

  • Diretórios
  • Diretórios ocultos
  • Arquivos ocultos

Responder1

Com GNU ls(a -Uopção de lsnão ordenar a lista de arquivos é uma extensão GNU):

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

O problema, porém, é que se algum desses globos não corresponder, o comando será cancelado, então você poderia fazer:

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

Isso emula o cshcomportamento pelo qual globs sem correspondência se expandem para nada, desde que haja pelo menos um glob que se expanda para algo no comando.

Observe que zshos globs nunca se expandem .e .., portanto, esses dois nunca serão incluídos.

informação relacionada