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

Dil*_*eep 7 linux permissions

我有一种情况,我需要找到具有 World Write (WW) 权限 666 的文件,并且我需要使用 664 来修复这些文件。为此,我使用了此命令

find /dir/stuct/path -perm -0002 -type f -print > /tmp/deepu/permissions.txt
Run Code Online (Sandbox Code Playgroud)

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

find /dir/stuct/path -perm -0002 -type f chmod 664
Run Code Online (Sandbox Code Playgroud)

我的语法正确吗?

Sco*_*ott 7

考虑一下您的要求。您(可能)在您的目录树中有任何可执行文件(脚本或二进制文件)吗?如果是这样,您是要删除执行权限(甚至是您自己的权限),还是要保持执行权限不变?如果你想离开执行权限不变,你应该使用chmod o-w删除(减)W¯¯从仪式的许可Ø只有thers场。

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

find  top-level_directory  -perm -2  -type f  -exec chmod o-w {} +
Run Code Online (Sandbox Code Playgroud)

chmod一次执行多个文件,最大限度地减少执行程序的数量。

PS 你不需要前导零2