方法1:将 ls 输出中的权限字符换成数字,然后分组求和即可。
# ll /etc/passwd | cut -c2-10 | tr "rwx-" "4210" | awk -F "" '{print $1+$2+$3""$4+$5+$6""$7+$8+$9}'
方法2:从 stat 命令输出中取出权限
# stat /etc/passwd | awk -F [0/] 'NR==4 {print $2}' <-- 用 awk
# stat /etc/hosts | sed -nr 's#^Access: \(0(.*)/-.*$#\1#gp' <-- 用 sed
方法3:直接使用命令选项
如果一个命令的输出中有我们想要的结果,很可能就有相应的参数直接看到结果:
# stat -c %a /etc/passwd