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

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

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

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

例如

drwx------
drwxr-xr-x 
drwxr-x---

我只是想知道我们是否可以使用对文件和目录进行排序ls

答案1

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

ls -l | sort

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

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

 ls -l | sort | awk '{ print $1, $NF}'

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

答案2

您还可以按八进制值排序。

for i in *; do stat --format="%a %n" "$i"; done | sort -n

相关内容