![在终端上:在函数中查找](https://linux22.com/image/93525/%E5%9C%A8%E7%BB%88%E7%AB%AF%E4%B8%8A%EF%BC%9A%E5%9C%A8%E5%87%BD%E6%95%B0%E4%B8%AD%E6%9F%A5%E6%89%BE.png)
当我在终端上的查找功能上指定用户时:为什么我必须/
在编写 -user 示例之前编写 a ?
例子:
find -user USERNAME
不会做任何事
find / -user USERNAME
完全按照预期工作吗?
PS:如果我依次使用2个函数:
find / -user USERNAME -group GROUPNAME
它会找到同时属于用户和组的文件或属于用户或组的文件吗?
我尝试在文档中搜索答案,但找不到任何内容,在哪里可以找到此类问题的答案?
答案1
鉴于您使用的是 Linux,您可能会使用 GNU find。这提供了一个“.”。 (当前工作目录)如果没有给出明确的目录参数。
该find
实用程序仅显示其内容发现(实际上并没有告诉你它在哪里看着),所以你可能没有注意到这一点。显然,您当前的工作目录中(或之下)没有任何内容USERNAME
,但是电脑上有。当你给它一个“/”作为参数时,find
从根级别“/”开始搜索整个计算机。
关于
find / -user USERNAME -group GROUPNAME
find
就像你说的那样对待它
find / \( -user USERNAME -a -group GROUPNAME \)
POSIX解释如下:
的连词初选;这
AND
运算符是由两个并置所暗示的初选或由可选运算符明确表示-a
。如果第一个表达式为 false,则不应计算第二个表达式。
在你的命令中,这些是初选:
-user USERNAME
-group GROUPNAME
进一步阅读:
答案2
所以,语法是
find (starting directory) (actions and flags)
因此,您需要指定某个目录,即使它只是/
目录。它不默认为/
例子:
find /starting_dir -size +500 -atime +20 -print
这将从中开始starting_dir
查找所有使用 500 个或更多块且在过去 20 天内未访问的文件