如何使用ls按权限对文件进行排序?

Che*_*ang 4 ls sort

我在一个目录中有大量文件和目录。

我需要根据权限对它们进行排序。

例如

drwx------
drwxr-xr-x 
drwxr-x---
Run Code Online (Sandbox Code Playgroud)

我只是想知道我们是否可以使用ls?

cra*_*150 9

ls 不直接支持按权限排序,但可以结合 sort 命令:

ls -l | sort
Run Code Online (Sandbox Code Playgroud)

您可以使用-k排序选项从特定字符开始匹配,格式为-k FIELD.CHAR,权限是ls输出中的第一个字段。因此 eg-k 1.2将从权限字符串的第二个字符开始,这将忽略任何目录/设备/链接等标志,或-k 1.5按组权限排序。

如果您不想要 的额外输出ls -l,可以使用 awk 将其删除:

 ls -l | sort | awk '{ print $1, $NF}'
Run Code Online (Sandbox Code Playgroud)

这将只打印第一个字段(权限)和最后一个(文件名)。