如何更改使用find命令找到的多个文件的权限?


11

我有一个包含大量文件的目录。部分文件具有755权限,另一部分具有644权限。我想将具有755权限的文件转换为644。我已经尝试通过从目录本身运行以下代码行:

find . -perm 755 -exec chmod 644 {}\;

但是,结果是,该权限仅更改了目录本身,将其更改回原来的位置后,我发现文件权限保持不变。我想念什么吗?


您的命令从目录中删除了可执行位,使得无法chdir到它并查看其中包含的文件。这就是该命令似乎不起作用的原因。试试吧find ./ -type f -exec chmod -x {} \;
沙杜尔2012年

Answers:


17

好的,看来我已经找到问题了。似乎在和之间必须有一个强制性空格,因此命令如下所示:{}\;

find . -perm 755 -exec chmod 644 {} \;

而不是:

find . -perm 755 -exec chmod 644 {}\;

另外,更改目录权限的问题也可以通过添加-type f标志来解决,因此它看起来如下所示:

find . -type f -perm 755 -exec chmod 644 {} \;

6
您可以使用+而不是\;来减少创建的子流程的数量。
凯文(Kevin)

-type d将找到目录。-type f会找到文件。
米克T
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.