Linux中的shell命令find中的:-perm 后面接 权限位和加了横线的权限位有什么不同。

2025-01-05 02:55:07
推荐回答(3个)
回答1:

#(case 1)-perm mode (比如: -perm 775)
解释:775 前面没有横线是代表只要找到百分之百一样的权限才算
好比说一个档案是 -rwxrwxr-x (775)就是100%的match
但是另一个档案是 -rwxrwxrwx (777)不是100%的match,others 多了写的权限就不是100%,所以不match!

# (case 2) -perm -mode (例如: -perm -775)
解释:-775 前面有横线表示只要标示的权限match,其他的无所谓,所以上面的第二个档案(777的)在这个case也会match的。

这样懂了吗?
谢谢!

英文资料:http://unixhelp.ed.ac.uk/CGI/man-cgi?find

-perm mode
File's permission bits are exactly mode (octal or symbolic). Since an exact match is required, if you want to use this form for symbolic modes, you may have to specify a rather complex mode string. For example '-perm g=w' will only match files which have mode 0020 (that is, ones for which group write permission is the only permission set). It is more likely that you will want to use the '/' or '-' forms, for example '-perm -g=w', which matches any file with group write permission.

-perm -mode
All of the permission bits mode are set for the file. Symbolic modes are accepted in this form, and this is usually the way in which would want to use them. You must specify 'u', 'g' or 'o' if you use a symbolic mode. See the EXAMPLES section for some illustrative examples.

回答2:

要加一个横杠-,表示都匹配,如-007就相当于777,-006相当于666

另外再说一点,不是说第二个不加就找不到文件了。是因为你这里根本就没有权限是007的文件。你可以自己测试一下,先建个文件,然后把权限改为007,然后再find . -perm 007 -print不加减号,还是可以找到的

回答3:

find . -perm 775 -prin 权限必须是 775的文件
find . -perm -007 -print 权限中必须包含007这个权限的文件,也就是other位上是满权限的文件
建立几个权限不同的文件试试就知道了