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