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

Ann*_*Fay 9 linux shell command-line ls syntax

如何使用 ls 列出目录并按所有者和组对它们进行排序?

pet*_*ohn 8

尝试这个:

ls -l | awk '{print $3, $4, $8}' | sort
Run Code Online (Sandbox Code Playgroud)

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

ls -l | awk '{print $3, $4, $0}' | sort
Run Code Online (Sandbox Code Playgroud)

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

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

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


vol*_*ron 7

正如彼得森所说,类似于:

  • 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,3,5从字段 3 到 5。