Como posso classificar sl por proprietário e grupo?

9

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

AnnanFay
fonte

Respostas:

8

Tente o seguinte:

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

Ele 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 ls -lsaída completa , classificados primeiro pelo nome do usuário, depois pelo nome do grupo e depois pelo que for ls -limpresso 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á a maior parte do tempo.

petersohn
fonte
11
s / números de linhas / números de colunas /
Pausado até novo aviso.
7

Como Petersburgo disse, algo semelhante a:

  • ls -l | awk '{print $3, $4, $8, $0}' | sort | column -t
    acrescentou o $8eo column -tde 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
  • ls -l | sort -k 4,4 -k 3 - classifica por grupo e depois pelo proprietário
  • ls -l | sort -k 3,3 -k 8 - classifica por proprietário e depois por nome de arquivo

Nota: a vírgula é o campo terminador; assim, 3,3inicia e termina no campo 3, 3,5dos campos 3 a 5.

vol7ron
fonte
Para classificar por grupo e depois pelo proprietário, tive que adicionar -b para ignorar os espaços em branco à esquerda, caso contrário, a lista seria classificada pelo comprimento da string do nome do proprietário.
Stefan Schmidt