bash 循环更改权限

标签 bash

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

files=~/Documents/*
for $file in $files {
   chmod 755 $file }

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

-bash: syntax error near unexpected token `chmod'

感谢您的帮助/建议

最佳答案

使您的文件可执行是有风险的。我建议不要这样做,除非你知道 正是你在做什么。

我会大胆猜测您真的不想让所有的文档文件夹都可执行,而您真正想做的是对每个人都可写的用户进行标准化-对该文件夹中所有内容的其他可读权限。

请注意(正如有人在另一个答案中提到的那样)chmod 命令有它自己的“递归”选项,-R另请注意,您可以将“符号”权限与 chmod 一起使用,而不必只使用八进制。所以:

chmod -R go+r-wx ~/Documents/

将为 ~/Documents/ 中和下的所有内容添加 Read 和删除 Write 和 eXecute 函数。

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

find ~/Documents/ -type d -exec chmod 755 {} \;
find ~/Documents/ -type f -exec chmod 644 {} \;

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

关于bash 循环更改权限,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11486249/

相关文章:

linux - 将文件复制到子目录并重命名

python - 从 Bash getenv 运行未定义

linux - 使用超过一级的 bash 别名(shell 中的 shell)

Linux shell 脚本赋值

bash - 如何在进程替换中使用case/esac?

linux - 编写具有自定义选项和行为的 sed 脚本

linux - 使用 bash 发送带有空格的字符串作为 git 提交消息

c++ - 如何制作带有 jpeg 帧的 .avi、.mp4 文件?

c++ - 无法在 Bash for Windows 中通过管道输出

bash - 如何在AWK中插入shell脚本的命令行参数?