我阅读了手册页,find
但对我来说并不清楚。
find -perm -mode
------>至少必须设置这些位才能使文件匹配
例如:find -perm -754
查找 754,755,757,774,777
关于什么?find -perm /754
请举例说明
我阅读了手册页,find
但对我来说并不清楚。
find -perm -mode
------>至少必须设置这些位才能使文件匹配
例如:find -perm -754
查找 754,755,757,774,777
关于什么?find -perm /754
请举例说明
它基本上是所有三个位 (
-mode
) 和任何单个位 (/mode
) 权限 (-perm
) 子集测试之间的区别。find -perm -mode
:在这种情况下,文件所提到的权限位必须存在。例如,如果你这样做
find -perm -666
并且如果一个文件有776
,它将被匹配。同样666
,777
etc 也会被匹配,但665
不会被匹配。总之,提到的(三个)位必须是权限位的子集。find -perm /mode
:在这里,任何一点子集都可以。例如,如果我们这样做
find -perm /666
,并且如果一个文件有644
,则该文件将被匹配,因为用户权限位是6
,并且我们正在寻找一个位子集。类似地,700
将匹配 , 等,但不匹配 例如060
,因为没有位包含所需权限位的任何子集。006
444
另一个答案正确解释了该
find -perm -mode
部分。find -perm /mode
但是,此答案更正了有关该部件的错误声明。第一句话是对的,但是,声称
444
不匹配的部分不是。-perm /mode
如果任何权限位匹配,则匹配,而不是整数。当传递 /666 时,我们要求
find
命令查找具有以下任何位的文件rw-rw-rw
(6 = 4+2,这意味着 rw-)。因此,它将匹配任何类型的所有者(用户、组或其他)可读或可写或两者兼有的任何文件。这意味着唯一不会匹配的文件是具有以下权限的文件:000
,001
,010
,011
,100
,101
,110
和111
. 任何其他权限都将被匹配,-perm /666
因为它会分配读或写标志。有关更多说明,请查看以下示例。
所以它唯一不匹配的是权限不包含 2 或 4 的文件:即所有仅包含 1 或 0 的文件:
也许澄清一下:
给予以下权限
/
是一个 OR 操作:return w&W || x&X|| y&Y || z&Z
即,如果文件包含与(至少)搜索的权限(wz)匹配的任何权限(WZ),则返回。
while
-
是 AND 操作:return w&W && x&X && y&Y && z&Z
即如果文件包含所有权限(WZ)匹配(至少)搜索的权限(wz),则返回。
在这两种情况下,这可能意味着 W 设置了多于 w 位(6 组 2 和 4,但不是 3 或 1)