这是一个我不太明白的简单脚本:
#!/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
通常会比匹配的文件数量少得多。