Bash exec + chmod 不全面的参数

Bash exec + chmod 不全面的参数

这是一个我不太明白的简单脚本:

#!/bin/bash
while read s; do
ssh -oStrictHostKeyChecking=no (connection to my servers) 'sudo find /path/to/main/directory -type f -exec chmod 755 {} +'
done < hosts_to_change.txt

如果命令中没有 +,则会显示 chmod:'755' 后缺少操作数。有人能解释一下为什么我需要使用 '+' 并且 755 还不够吗?

答案1

-exec chmod 755 {} +chmod以优化的方式对选定的常规文件执行命令。

命令行不是chmod针对每个单独选定的文件执行,而是通过将每个选定的文件名附加到命令行的末尾来构建,其方式与xargs构建命令行的方式非常相似。

这意味着命令的总调用次数chmod通常会比匹配的文件数量少得多。

相关内容