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

Using find to locate files not owned by USER or GROUP

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

我有 3 个测试目录:

root:root test1
root:group test2
user:root test3

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

我试过这些:

find . ! -user user -or ! -group group
find . ! \( -user user -or -group group \)

但其中 none 有效。我是不是误会了什么?

我做了一些进一步的测试,使用第一个例子:find . ! -user user -or ! -group group -print0我只能从test1目录

中得到结果

not (X or Y)(not X or not Y)是不同的东西,否定不是分配运算。你确实需要括号 - 因为 -o 的优先级低于 -a 由初选连词暗示 - 但内部的两个谓词也应该被否定。

find . \( ! -user user -o ! -group group \) -exec chown user:group {} +