Come posso ordinare ls per proprietario e gruppo?


Risposte:


8

Prova questo:

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

Stampa il nome utente, il nome del gruppo e il nome del file, a condizione che il nome del file non contenga spazi. In alternativa, puoi digitare:

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

Questo stamperà il nome utente, il nome del gruppo e l' ls -loutput completo , ordinati prima per nome utente, quindi per nome del gruppo, quindi per ls -lprima cosa viene stampato.

Si noti che a seconda della distribuzione, i numeri di colonna effettivi potrebbero differire. Ho provato il mio in SUSE e coreutils versione 5.2.1.

Probabilmente ci sono soluzioni migliori, più elaborate, ma questa è la più semplice e funzionerà per la maggior parte del tempo.


1
s / numeri di riga / numeri di colonna /
— In pausa fino a nuovo avviso.

7

Come diceva petersohn, qualcosa di simile a:

  • ls -l | awk '{print $3, $4, $8, $0}' | sort | column -t
    aggiunto il $8e il column -tper la stampa carina

O ancora meglio:

  • ls -l | sort -k 3 - ordina per proprietario e per impostazione predefinita ordina il campo (gruppo) successivo e attivo
  • ls -l | sort -k 4,4 -k 3 - ordina per gruppo e quindi per proprietario
  • ls -l | sort -k 3,3 -k 8 - ordina per proprietario e quindi per nome file

Nota: la virgola è il campo di terminazione, quindi 3,3inizia e termina nel campo 3 3,5ordina dai campi da 3 a 5.


Per ordinare per gruppo e poi per proprietario ho dovuto aggiungere -b per ignorare gli spazi vuoti iniziali, altrimenti l'elenco sarebbe stato ordinato in base alla lunghezza della stringa del nome del proprietario.
— Stefan Schmidt,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.