我在一个目录中有大量文件和目录。
我需要根据权限对它们进行排序。
例如
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