2010-11-10 5 views
5

Je veux trier les propriétaires dans l'ordre alphabétique d'un appel à ls -l et ne peux pas trouver un moyen de le faire. Je sais quelque chose comme ls-l | trierait trier le nom de fichier, mais comment puis-je trier les propriétaires dans l'ordre?trier les propriétaires de ls-l dans Unix

Répondre

0

Que diriez-vous ...

ls -l | cut -d ' ' -f 3 | sort | uniq 
0

Essayez ceci:

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

Il imprime le nom d'utilisateur, le nom du groupe et le nom du fichier. (Nom de fichier ne peut pas contenir des espaces)

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

Cela affichera le nom d'utilisateur, le nom du groupe et la pleine sortie de ls -l, triés par le nom d'utilisateur, puis le nom du groupe, alors que ls -l premières impressions

+0

merci beaucoup. Le deuxième a fait l'affaire. – brian

+0

@brian pas de problème. Mind marquant cela comme la réponse acceptée alors? – Alex

10

le propriétaire est le troisième champ, utilisez donc -k 3:

ls -l | sort -k 3 

vous pouvez étendre cette idée de tri en fonction d'autres domaines, et vous pouvez avoir plusieurs -k options. Par exemple, peut-être que vous voulez trier par le propriétaire et la taille puis par ordre décroissant:

ls -l | sort -k 3,3 -k 5rn 
1

Je ne sais pas si vous voulez que les propriétaires ou l'ensemble des informations triées par le propriétaire. Dans le premier cas, la solution de superfo est presque correcte. De plus, vous devez supprimer la répétition des espaces blancs de ls sortie de avec tr parce que sinon coupé qui les utilise comme séparateur ne fonctionne pas dans tous les répertoires. *

Donc à la fin vous obtenez ceci:

ls -l | tr -s ' ' | cut -d ' ' -f 3 | sort | uniq 

* Certains répertoires ont une valeur à deux chiffres dans le deuxième champ et toutes les autres lignes avec un seul chiffre obtenir un autre espace pour préserver la mise en page.

Questions connexes