Isto vem sob o título "um substituto para isso". O script a seguir emulará aproximadamente o comportamento de ls –l com a diferença que agrupa os subdiretórios no início de cada listagem de diretório.
#!/bin/sh -
sort_ls_output()
{
sed -n -e '1s/^/1#/p' -e '1n' \
-e 's/^/#/' -e 's/^#d/2#d/' -e 's/^#/3#/' -e p \
| cat -n | sort -n -k2 -k1 | sed 's/[^#]*#//'
}
if [ $# = 0 ]
then
ls -l | sort_ls_output
else
for arg
do
echo
if [ -d "$arg" ]
then
echo "${arg}:"
ls -l "$arg" | sort_ls_output
else
ls -l "$arg"
fi
done
fi
É um corte brusco.
Ele não lida com arquivos comuns individuais (não-diretórios) na linha de comando, da mesma forma que ls –l , e não lida com opções (por exemplo, –a ).