使用 find 查找不属于 USER 或 GROUP 的文件

Kev*_*rom 5 linux bash find

我需要在 CentOS 7 中查找不属于用户或不属于组的文件和文件夹。

我有3个测试目录:

root:root test1
root:group test2
user:root test3
Run Code Online (Sandbox Code Playgroud)

我需要能够找到所有 3 个目录,因此我可以在一个 find 命令中 chown user:group。

我已经尝试过这些:

find . ! -user user -or ! -group group
find . ! \( -user user -or -group group \)
Run Code Online (Sandbox Code Playgroud)

但它们都不起作用。我是不是误会了什么?

我已经做了一些进一步的测试,并使用第一个示例:find . ! -user user -or ! -group group -print0我只能从test1目录中获取结果

ogu*_*ail 6

not (X or Y)(not X or not Y)是不同的东西,否定不是分配运算。您确实需要括号\xe2\x80\x94,因为-o的优先级低于原色\xe2\x80\x94 的连接所暗示的-a的优先级,但内部的两个谓词也应该被否定。

\n
find . \\( ! -user user -o ! -group group \\) -exec chown user:group {} +\n
Run Code Online (Sandbox Code Playgroud)\n