Não, mas se você usar zsh
, poderá fazer:
mll() {
(($#)) || set -- *(N-/) *(N^-/)
(($#)) && ls -ldU -- $@
}
Você também pode definir uma ordem de classificação como:
dir1st() { [[ -d $REPLY ]] && REPLY=1-$REPLY || REPLY=2-$REPLY;}
e use-o como:
ls -ldU -- *(o+dir1st)
Dessa forma, você pode usá-lo para outros comandos além de ls
ou com ls
com opções diferentes ou para padrões diferentes, como:
ls -ldU -- .*(o+dir1st) # to list the hidden files and dirs
ou:
ls -ldU -- ^*[[:lower:]]*(o+dir1st) # to list the all-uppercase files and dirs
Se você tiver que usar bash
, o equivalente seria:
mll() (
if (($# == 0)); then
dirs=() others=()
shopt -s nullglob
for f in *; do
if [[ -d $f ]]; then
dirs+=("$f")
else
others+=("$f")
fi
done
set -- "${dirs[@]}" "${others[@]}"
fi
(($#)) && exec ls -ldU -- "$@"
)
bash
não possui qualificadores globbing ou qualquer forma de afetar a ordem de classificação de globs, ou qualquer forma de transformar o nullglob em uma base per-glob, ou ter contexto local para opções (além de iniciar um subshell, portanto o ()
em vez de {}
acima) AFAIK.