以数字格式显示文件权限,即“0755”?

amo*_*era 36 filesystem permissions

有没有办法以数字格式“0777”而不是“-rw--r--r”格式获取文件/目录权限?

小智 47

您可以使用 stat 命令显示文件的八进制权限:

stat -c %a [filename]
Run Code Online (Sandbox Code Playgroud)

或者通过使用查找:

find [path] -printf '%m %p\n'
Run Code Online (Sandbox Code Playgroud)

请注意, find 是递归的,并且还会打印所有子目录中的所有文件。您可以使用诸如maxdepth或 之类的选项prune来阻止它递归。


rmm*_*oul 10

我知道这是一篇旧帖子,但我在寻找解决方案时找到了它,并对其进行了扩展:

stat -c '%a - %n'
Run Code Online (Sandbox Code Playgroud)

这将显示文件权限和文件名。这允许您查看文件夹中每个文件的权限:

stat -c '%a - %n' *
Run Code Online (Sandbox Code Playgroud)

我还更进一步,并做了一个别名:

alias perms="stat -c '%a - %n'"
Run Code Online (Sandbox Code Playgroud)

所以输入 perms * 会给我每个文件的权限,或者 perms file.php 会给我一个文件的权限。

对于在寻找 OSX 解决方案时发现此问题的用户:

10.10 之后的 OSX 版本不再具有接受 -c 参数的 stat 版本。如果您收到有关“非法选项 -- c”的错误消息,那么您应该可以使用以下 stat 命令:

stat -f "%A -  %N" *
Run Code Online (Sandbox Code Playgroud)

这也可以像我分享的上一个命令一样使用别名:

alias perms="stat -f '%A -  %N'"
Run Code Online (Sandbox Code Playgroud)


May*_*hux 7

您还可以使用此解决方法:

find FILENAME/DIRECROY -printf "%m:%f\n"
Run Code Online (Sandbox Code Playgroud)

示例检查我的视频目录:

find Videos -printf "%m:%f\n"

755:Videos
Run Code Online (Sandbox Code Playgroud)

另一种方法:

用于列出所有具有权限的目录文件

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}'
Run Code Online (Sandbox Code Playgroud)