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.