如何使用 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
添加了$8
和column -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 进行排序。