我如何按照所有者和组对 ls 进行排序?

我如何按照所有者和组对 ls 进行排序?

如何使用 ls 列出目录并根据其所有者和组对其进行排序?

答案1

尝试这个:

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 中尝试过。

可能有更好,更复杂的解决方案,但这是最简单的一个,并且大多数情况下都有效。

答案2

正如彼得森所说,类似的事情:

  • 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,3字段 3 开始和结束3,5从字段 3 到字段 5 进行排序。

相关内容