Listar diretórios primeiro com MinGW ls

3

Comecei recentemente a usar o MinGW em vez do Cygwin na minha máquina com Windows 7, e estou tendo um pequeno problema com o ls do MinGW. No Cygwin, ls tem uma opção --group-directories-first que, obviamente, faz com que os diretórios sejam listados antes de outros tipos de arquivos. No entanto, MinGW não parece ter essa opção, e não consigo encontrar um substituto para isso. Existe um?

    
por ewok 04.12.2012 / 19:00

1 resposta

1

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 ).

    
por 04.12.2012 / 23:00