问题描述
有没有办法以数字格式 “0777” 而不是 “-rw–r–r” 格式获取文件/目录权限?
最佳方法
您可以使用 stat 命令显示文件的八进制权限:
stat -c %a [filename]
或者通过使用查找:
find [path] -printf '%m %p\n'
请注意,查找是递归的,并且还将打印所有子目录中的所有文件。您可以使用 maxdepth
或 prune
等选项来阻止它递归。
次佳方法
我知道这是一篇旧文章,但我在寻找解决方案时发现了它,并对其进行了扩展:
stat -c '%a - %n'
这将显示文件权限和文件名。这使您可以通过以下方式查看文件夹中每个文件的权限:
stat -c '%a - %n' *
我还更进一步,做了一个别名:
alias perms="stat -c '%a - %n'"
所以输入 perms * 会给我每个文件的权限,或者 perms file.php 会给我那个文件的权限。
对于在寻找 OSX 解决方案时发现此问题的用户:
10.10 之后的 OSX 版本不再有接受 -c 参数的 stat 版本。如果您收到有关“非法选项 — c”的错误,那么您应该能够使用此统计命令:
stat -f "%A - %N" *
这也可以像我之前共享的命令一样使用别名:
alias perms="stat -f '%A - %N'"
第三种方法
您也可以使用此解决方法:
find FILENAME/DIRECROY -printf "%m:%f\n"
示例检查我的视频目录:
find Videos -printf "%m:%f\n"
755:Videos
另一种方法:
用于列出所有目录文件及其权限
ls -l | awk '{k=0;for(i=0;i<=8;i++)k+=((substr($1,i+2,1)~/[rwx]/) \
*2^(8-i));if(k)printf("%0o ",k);print}'