如何根据 find 命令的结果 chmod 文件

如何根据 find 命令的结果 chmod 文件

我遇到一种情况,我需要找到具有世界写入(WW)权限 666 的文件,并且我需要使用 664 来修复此类文件.. 为此,我使用了此命令

find /dir/stuct/path -perm -0002 -type f -print > /tmp/deepu/permissions.txt

当我执行命令时,我得到具有 WW 权限的文件。现在我的要求是

find /dir/stuct/path -perm -0002 -type f chmod 664

我的语法正确吗?

答案1

考虑一下您的需求。您(可能)的目录树中是否有任何可执行文件(脚本或二进制文件)?如果是这样,您是否要删除执行权限(甚至是您自己的权限),还是要保持执行权限不变?如果你想保持执行权限不变,你应该使用chmod o-w删除(减去)w仪式许可仅此字段。

此外,正如 Anthon 指出的那样,find另一个答案中给出的命令会chmod针对它找到的每个世界可写文件执行一次程序。说起来效率稍微高一点

find  top-level_directory  -perm -2  -type f  -exec chmod o-w {} +

这会chmod同时执行多个文件,从而最大限度地减少执行次数。

PS 您不需要2.

答案2

find /dir/stuct/path -perm -0002 -type f -exec chmod 664 {} \;

“{}”代表find找到的文件。这 ”\;”结束需要执行的命令。

相关内容