chmod文件仅在所有子目录中


54

请有人协助我使用chmod,我具有以下文件结构

-dir1
--file1
--file2
--dir1a
---file1a1
---file1a2
--dir1b
---file1b1
---file1b2

如何将mod 655更改为dir1和所有subdir下的所有文件?因此,所有文件将具有655权限,所有目录将保持原样。

谢谢

Answers:


108

更好地使用

find . -type f -exec chmod 655 -- {} +

如果文件名包含空格或以破折号开头,则@sagarchalise提出的其他解决方案将不起作用。


16
与此相关,和chmod所有的目录,你可以使用find . -type d -exec chmod 755 {} +改变所有目录为755
克里斯哈珀

2
+代表什么?
Brettski

3
@Brettski:将+符号扩展find到文件路径列表(如果太长,则扩展一部分)。
enzotib

3
是为了什么?
东方

2
--指示的命令行选项的结束。这样可以防止将以连字符开头的文件解释为命令行选项,因为它会在--。之后。
蒂姆·提斯多

8

我认为要进去dir1

find . -type f | xargs chmod 655

会成功的


这也可行,但是我收到“没有这样的文件或目录”的警告
netic

@manetic:如我的回答所述,取决于包含空格的文件名。
enzotib

4
为了完整起见,请将其更改为find。型f -print0 | xargs -0 chmod 655会解决我认为的空间问题,尽管@enzotib的回答更为简洁
matt freake 2015年

马特·弗雷克(Mat freake)说了什么
Sergiy Kolodyazhnyy
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.