Listar diretórios com diretórios de pontos por último, depois arquivos de pontos

2

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

A saída deve ser: (classificada pelo nome ASC)

  • Diretórios
  • Diretórios ocultos
  • Arquivos ocultos
por makim 23.06.2014 / 23:34

1 resposta

4

Com GNU ls (a opção -U para informar ls para não classificar a lista de arquivos é uma extensão GNU):

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

O problema é que, se algum desses globs não corresponder, o comando será cancelado, então você pode fazer:

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

Que emula o comportamento csh , pelo qual as globs sem correspondência se expandem para nada, desde que haja pelo menos uma glob que se expanda para algo no comando.

Observe que zsh globs nunca expande . e .. , então esses dois nunca serão incluídos.

    
por 23.06.2014 / 23:36

Tags