Estou ciente da ls
opçã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 -U
opção de ls
nã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 csh
comportamento 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 zsh
os globs nunca se expandem .
e ..
, portanto, esses dois nunca serão incluídos.