Como posso classificar ls por proprietário e grupo?

9

Como posso listar diretórios com ls e classificá-los por seu proprietário e grupo?

    
por Annan 14.05.2010 / 11:01

2 respostas

8

Tente isto:

ls -l | awk '{print $3, $4, $8}' | sort

Ele irá imprimir o nome do usuário, o nome do grupo e o nome do arquivo, desde que o nome do arquivo não contenha espaços. Como alternativa, você pode digitar:

ls -l | awk '{print $3, $4, $0}' | sort

Isso imprimirá o nome do usuário, o nome do grupo e a saída ls -l completa, classificada primeiro pelo nome do usuário, depois o nome do grupo e, em seguida, o que for que ls -l imprime primeiro.

Observe que, dependendo da sua distribuição, os números reais das colunas podem ser diferentes. Eu tentei o meu no SUSE e Coreutils versão 5.2.1.

Provavelmente existem soluções melhores e mais elaboradas, mas essa é a mais simples e funcionará na maioria das vezes.

    
por 14.05.2010 / 11:31
7

Como petersohn disse, algo semelhante a:

  • ls -l | awk '{print $3, $4, $8, $0}' | sort | column -t
    adicionou o $8 e o column -t para impressão bonita

Ou melhor ainda:

  • ls -l | sort -k 3 - classifica por proprietário e por padrão classifica o próximo campo (grupo) e em
  • ls -l | sort -k 4,4 -k 3 - classifica por grupo e depois por proprietário
  • ls -l | sort -k 3,3 -k 8 - classifica por proprietário e depois por nome de arquivo

Observação: a vírgula é o campo terminador, então 3,3 começa e termina no campo 3 3,5 classifica dos campos 3 a 5.

    
por 07.06.2012 / 22:57