bash 循环更改权限

Jef*_*eff 2 bash

我正在尝试更改 ~/Documents 文件夹中文件的所有权限,我认为以下小循环会起作用,但似乎不起作用。谁能帮我?这是循环:

files=~/Documents/*
for $file in $files {
   chmod 755 $file }
Run Code Online (Sandbox Code Playgroud)

我试图将其直接写入 bash 命令行,但出现以下错误:

-bash: syntax error near unexpected token `chmod'
Run Code Online (Sandbox Code Playgroud)

感谢您的帮助/建议

gho*_*oti 5

使您的文档可执行存在风险。我建议不要这样做,除非您确切地知道自己在做什么。

我会大胆地猜测您并不是真的想让所有的 Documents 文件夹都可以执行,而您真正想做的是标准化该文件夹中所有内容的用户可写的其他人可读的权限.

请注意(正如有人在另一个答案中提到的)该chmod命令有自己的“递归”选项,-R. 另请注意,您可以在 chmod 中使用“符号”权限,您不会被仅限于八进制。所以:

chmod -R go+r-wx ~/Documents/
Run Code Online (Sandbox Code Playgroud)

将从中和下的所有内容中添加读取和删除写入和执行函数~/Documents/

请注意,这将使子目录可读,但不会提供对其中文件的访问(因为这是目录上的可执行位所做的)。所以你可能想使用两个命令:

find ~/Documents/ -type d -exec chmod 755 {} \;
find ~/Documents/ -type f -exec chmod 644 {} \;
Run Code Online (Sandbox Code Playgroud)

第一行只chmod在目录上运行,使它们既可读又可访问。第二行只影响你的文件,让全世界都可以读取它们。