CentOS 5.5 中 `find -perm -g-r` 为何匹配所有文件?
2024-03-27 17:51:40
在 CentOS 5.5 中使用 find -perm -g-r
寻找不具有组可读权限的文件
问题:find -perm -g-r
匹配所有文件的原因
在 CentOS 5.5 中,find -perm -g-r
确实会匹配所有文件。这是因为该版本的 find
中,-perm
选项的语义与较新版本的 find
不同。
-perm
选项的语义
在较新版本的 find
中(例如 find 4.4.2 和更高版本),-perm
选项采用一个八进制文件模式作为参数。这个模式指定了文件或目录的权限。例如:
-perm 644
:匹配权限为 644 的文件(用户可读/写,组可读,其他不可读/写)-perm -g+r
:匹配具有组可读权限的文件或目录(至少具有组可读权限)-perm -g-r
:匹配不具有组可读权限的文件或目录(即组不可读)
CentOS 5.5 中的 -perm
选项
然而,在 CentOS 5.5 中,-perm
选项采用一个更简单的语法。它只检查文件或目录是否具有特定的权限位。例如:
-perm -g
:匹配具有组可读权限的文件或目录-perm -r
:匹配具有可读权限的文件或目录
请注意,在这个较旧的语法中,没有 用于指定权限位的否定形式。因此,-perm -g-r
只检查文件或目录是否具有组可读权限,而不管其他权限如何。
解决方法
为了在 CentOS 5.5 中找到不具有可读组权限的文件,你可以使用以下命令:
find . \! -perm -g
这个命令使用 \!
(逻辑非)运算符来匹配不具有组可读权限的文件。
示例
以下示例展示了如何在 CentOS 5.5 中使用 find
命令找到不具有可读组权限的文件:
[root@localhost ~]# find . \! -perm -g
./file1.txt
./file2.txt
在这个示例中,./file1.txt
和 ./file2.txt
是不具有可读组权限的文件。
常见问题解答
1. 为什么在较新的 find
版本中更改了 -perm
选项的语义?
这主要是为了提供一个更一致和可预测的选项。较旧的语义容易出错,因为用户可能忘记指定八进制模式。
2. 是否有其他方法来查找不具有组可读权限的文件?
是的,你可以使用其他命令,例如 stat
或 ls -l
来检查文件的权限。
3. 是否可以自定义 find
命令以使用较旧的 -perm
语义?
否,自定义 find
命令是不可能的。然而,你可以使用其他命令,例如 xargs
或 grep
来模拟较旧的语义。
4. find
命令还有哪些其他有用的选项?
find
命令还有许多其他有用的选项,例如 -name
、-type
和 -exec
。你可以查看 man find
以了解更多信息。
5. 我可以在哪里找到 find
命令的其他文档?
你可以在线找到大量的 find
命令文档,包括 GNU 文档和 Linux 手册页。