我已经关闭了命令,但是似乎没有执行命令。
find /folder \! -user USERNAME -o -not -group GROUPNAME -o -not -perm 750 -exec chown USERNAME:GROUPNAME {} \; -exec chmod 750 {} \;
答案 0 :(得分:2)
find
的手册说(重点是我的):
expression -o expression
替代原语; OR运算符。 如果第一个表达式为真,则不对第二个表达式求值。
对于您的调用,这意味着,如果当前正在处理的文件不属于用户USERNAME
或用户组GROUPNAME
,则find
将保持原样并跳至下一个,并且如果其权限位与750
不匹配,则将运行chown
和chmod
。
要使其工作,您需要在表达式周围放置括号以强制其优先级,例如:
find /folder ! \( -user USERNAME -group GROUPNAME -perm 750 \) \ -exec
echochown USERNAME:GROUPNAME {} \; \ -exec
echochmod 750 {} \;
如果输出看起来不错,请删除echo
。
还要注意,chown
和chmod
都可以一次处理多个文件,因此可以用\;
替换+
并节省时间。>