Ordenar lista de diretórios em ordem alfabética

0

Eu preciso classificar os diretórios em ordem alfabética descendente e canalizar para classificar não está funcionando.

alias ld='ls -altp | grep ^d|sort -n'
    
por KenH 04.05.2018 / 19:59

3 respostas

3

ls -ld */

Isto lhe dará os diretórios no diretório atual no formato ls long, em ordem lexicográfica. Se um arquivo é um link simbólico para um diretório, isso também será listado como um diretório.

Se você tem ls aliado a algo, use command ls ou \ls em vez de apenas ls acima.

A barra ao final de * garantirá que o * seja expandido apenas para diretórios (possivelmente resolvendo links simbólicos) e também será incluído na saída. A opção -d irá certificar-se de que os próprios diretórios estão listados, não seus conteúdos.

Como Jeff aponta , nomear seu apelido ld é uma má ideia, já que colide com o nome de um utilitário existente.

    
por 04.05.2018 / 20:14
1

Não analise a saída de ls . É uma má ideia e isso fará você se sentir mal. Em vez disso, find dos diretórios e deixe ls classificá-los para você sem tentar mastigar sua saída :

$ find . -type d -maxdepth 1 -print0 | xargs -0 ls -ld

Alegremente, ls já classifica lograograficamente sua saída por padrão.

Mais simplesmente, há tree :

$ tree -d -L 1
    
por 04.05.2018 / 20:08
0

Você está dizendo sort para ordenar a lista longa de ls numericamente . Isso é depois de dizer ls para ordenar a listagem por hora de modificação ( t )!

Minha melhor sugestão para uma correção curta seria:

ls -d */ | sort # optionally '-f' to sort upper- and lower-case together.

Eu sugeriria um shell como o zsh que pode selecionar diretórios e classificá-los por si só:

zsh -c "ls -ld */(on)"

Em que o / especifica que você deseja apenas diretórios, e o qualificador (on) diz para classificar a lista com base em seu nome.

Também recomendo não sobrecarregar o ld nome do programa .

alias lls='zsh -c "ls -ld */(on)"'
    
por 04.05.2018 / 20:14

Tags