如何修复Bash中查找超150天目录改属主时的exec参数缺失报错
find命令
-exec参数报错修复方案 报错原因
原命令存在三处语法问题,直接导致-exec参数不完整报错:
chown命令不完整:oracle:oinst是未写完的属主属组配置,标准Oracle用户组应为oracle:oinstall,可根据实际业务的属主属组名称调整- 缺少
-exec必填的路径占位符{}:该符号用来指代find搜索到的目标目录路径 - 缺少
-exec参数的结束标记\;:find规定-exec后的执行语句必须以转义分号\;收尾,标识执行命令的边界;另外原命令中给chown加的多余双引号也需要移除
修复后命令
如果需要先打印匹配的目录名,再递归修改属主,执行以下命令:
find /mnt/mailfolder/ -maxdepth 1 -type d -mtime +150 -printf "%P\n" -exec chown -R oracle:oinstall {} \;
可选优化建议
- 执行修改前建议先跑预览命令,确认匹配的目录符合预期,避免误操作:
find /mnt/mailfolder/ -maxdepth 1 -type d -mtime +150 -printf "%P\n" - 如果匹配的目录数量较多,可以把结尾的
\;替换为+,find会将多个路径拼成一条chown命令执行,大幅提高执行效率:find /mnt/mailfolder/ -maxdepth 1 -type d -mtime +150 -printf "%P\n" -exec chown -R oracle:oinstall {} +
内容的提问来源于stack exchange,提问作者nick
相关产品推荐
相关产品推荐

