¿Cómo puedo ordenar ls por propietario y grupo?

Respuestas:

8

Prueba esto:

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

Imprimirá el nombre de usuario, el nombre del grupo y el nombre del archivo, siempre que el nombre del archivo no contenga espacios. Alternativamente, puede escribir:

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

Esto imprimirá el nombre de usuario, el nombre del grupo y la ls -lsalida completa , ordenados primero por el nombre del usuario, luego el nombre del grupo y luego lo que se ls -limprima primero.

Tenga en cuenta que, según su distribución, los números de columna reales pueden diferir. Probé el mío en SUSE y coreutils versión 5.2.1.

Probablemente haya soluciones mejores y más elaboradas, pero esta es la más simple y funcionará la mayor parte del tiempo.

Petersohn
fuente
1
s / números de fila / números de columna /
pausa hasta nuevo aviso.
7

Como dijo Peterters, algo similar a:

  • ls -l | awk '{print $3, $4, $8, $0}' | sort | column -t
    añadido el $8y la column -timpresión bonita

O mejor:

  • ls -l | sort -k 3 - ordena por propietario y por defecto ordena el siguiente campo (grupo) y en
  • ls -l | sort -k 4,4 -k 3 - ordena por grupo y luego por propietario
  • ls -l | sort -k 3,3 -k 8 - ordena por propietario y luego por nombre de archivo

Nota: la coma es el campo del terminador, por lo que 3,3comienza y termina en el campo 3 3,5de los campos 3 a 5.

vol7ron
fuente
Para ordenar por grupo y luego por propietario, tuve que agregar -b para ignorar los espacios en blanco iniciales, de lo contrario, la lista se ordenaría por la longitud de la cadena del nombre del propietario.
Stefan Schmidt