使用 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 {} +
我需要在 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 {} +