在Unix中排序ls-l所有者

时间:2010-11-10 04:23:08

标签: unix

我想从调用ls -l的字母顺序对所有者进行排序,但无法找到方法。我知道像ls-l |这样的东西sort会对文件名进行排序,但如何按顺序对所有者进行排序?

4 个答案:

答案 0 :(得分:10)

所有者是第三个字段,因此请使用-k 3

ls -l | sort -k 3

您可以将此想法扩展到基于其他字段的排序,并且您可以拥有多个-k选项。例如,您可能希望按所有者排序,然后按降序排列大小:

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

答案 1 :(得分:1)

我不确定您是否只想要所有者或所有者排序的所有信息。在前一种情况下,superfo的解决方案几乎是正确的。 此外,您需要使用 tr ls 的输出中删除重复的空格,因为否则使用它们作为分隔符的 cut 将无效所有目录。*

所以最后你得到了这个:

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

*某些目录在第二个字段中具有两位数值,而所有其他具有单个数字的行都会获得额外的空格以保留布局。

答案 2 :(得分:0)

怎么样......

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

答案 3 :(得分:0)

试试这个:

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

它将打印用户名,组名和文件名。 (文件名不能包含空格)

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

这将打印用户名,组名和完整的ls -l输出,首先按用户名排序,然后按组名称排序,然后首先打印ls -l <​​/ p>