Comment trier les ls par propriétaire et groupe?

9

Comment répertorier les répertoires avec ls et les trier par propriétaire et groupe?

AnnanFay
la source

Réponses:

8

Essaye ça:

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

Il imprimera le nom d'utilisateur, le nom de groupe et le nom de fichier, à condition que le nom de fichier ne contienne pas d'espaces. Alternativement, vous pouvez taper:

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

Cela imprimera le nom d'utilisateur, le nom du groupe et la ls -lsortie complète , triés d'abord par le nom d'utilisateur, puis le nom du groupe, puis tout ce qui ls -ls'imprime en premier.

Notez que selon votre distribution, les numéros de colonne réels peuvent différer. J'ai essayé le mien dans SUSE et coreutils version 5.2.1.

Il existe probablement des solutions meilleures et plus élaborées, mais celle-ci est la plus simple et fonctionnera la plupart du temps.

petersohn
la source
1
s / numéros de ligne / numéros de colonne /
pause jusqu'à nouvel ordre.
7

Comme l'a dit Petersohn, quelque chose de similaire à:

  • ls -l | awk '{print $3, $4, $8, $0}' | sort | column -t
    ajouté le $8et le column -tpour une jolie impression

Ou encore mieux:

  • ls -l | sort -k 3 - trie par propriétaire et trie par défaut le champ (groupe) suivant et
  • ls -l | sort -k 4,4 -k 3 - trie par groupe puis par propriétaire
  • ls -l | sort -k 3,3 -k 8 - trie par propriétaire puis par nom de fichier

Remarque: la virgule est le champ de fin, donc 3,3commence et se termine au champ 3 3,5trie des champs 3 à 5.

vol7ron
la source
Pour trier par groupe, puis par propriétaire, j'ai dû ajouter -b pour ignorer les blancs de début, sinon la liste serait triée par la longueur de chaîne du nom du propriétaire.
Stefan Schmidt