如何按所有者和组分类ls?


Answers:


8

尝试这个:

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

如果文件名不包含空格,它将打印用户名,组名和文件名。或者,您可以键入:

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

这将打印用户名,组名和完整ls -l输出,首先按用户名排序,然后按组名排序,然后再ls -l打印任何内容。

请注意,根据您的分布,实际的列号可能会有所不同。我在SUSE和coreutils版本5.2.1中尝试了我的版本。

可能会有更好,更复杂的解决方案,但这是最简单的解决方案,并且在大多数情况下都可以使用。


1
s /行号/列号/
暂停,直到另行通知。

7

正如petersohn所说,类似于:

  • ls -l | awk '{print $3, $4, $8, $0}' | sort | column -t
    添加了$8column -t用于漂亮的打印

甚至更好:

  • ls -l | sort -k 3 -按所有者排序,默认情况下排序下一个字段(组),然后按
  • ls -l | sort -k 4,4 -k 3 -按组然后按所有者排序
  • ls -l | sort -k 3,3 -k 8 -按所有者排序,然后按文件名排序

注意:逗号是终止符字段,因此从字段3到5的字段3 3,3开始和结束3,5


要按组然后按所有者排序,我必须添加-b来忽略前导空格,否则列表将按所有者名称的字符串长度进行排序。
Stefan Schmidt
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.