Linux - 如何递归修改文件夹?

Bla*_*ack 125 chmod

如何递归 chmod 文件夹内的所有内容?

例如,我有一个名为的文件夹var,其中包含许多子文件夹和文件。

如何将 chmod 755 递归应用于此文件夹及其所有内容?

slh*_*hck 195

请参阅手册(man chmod):

-R, --recursive
change files and directories recursively
Run Code Online (Sandbox Code Playgroud)

chmod -R 755 /path/to/directory 会执行你想要的。

然而…

  1. 您通常不想 755 所有文件;这些应该是 644,因为它们通常不需要是可执行的。因此,您find /path/to/directory -type d -exec chmod 755 {} \;只能更改目录权限。使用-type fchmod 644将权限应用于文件。

  2. 这将覆盖任何现有权限。这样做不是一个好主意/var- 该文件夹已经具有系统设置的正确权限。例如,某些目录/var需要 775 权限(例如,/var/log)。

所以,在做之前sudo chmod——特别是在系统文件夹上——暂停并考虑这是否真的需要。

  • 当 _adding_ 权限位时,支持大写的 `[augo]+X` 仅在对象已经是可执行的情况下才添加 +x。 (8认同)

小智 11

对于基于 PHP 的网站,像这样的许多来源建议目录为 755,文件为 644。

如果你在网站的DocumentRoot,可以这样设置:

find . -type d -exec chmod 755 {} \;

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


Vis*_*ant 7

如果您想应用于chmod特定目录/文件,可以使用find以下命令:

find . -type f -name "*.sh" -print0 |xargs -0 chmod 755
Run Code Online (Sandbox Code Playgroud)