You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

bash脚本中find命令-exec参数报‘missing argument’错误的解决方法

解决bash脚本中find命令-exec参数报错的问题

这个错误的核心原因是shell错误地将分号;解析为find命令的结束符,而不是将其作为-exec选项的一部分传递给find工具。这通常是因为分号没有正确转义,或者命令换行时没有添加行延续符导致的。

正确的脚本实现方式

你可以通过以下两种方式确保命令在bash脚本中正常运行:

方式1:单行命令(与命令行完全一致)

直接将命令写入脚本,确保分号前的反斜杠\存在:

#!/bin/bash
find /home/core/backup -mtime +2 -type f -exec rm -fv {} \;

方式2:多行拆分(提高可读性)

如果需要拆分命令到多行,必须在每行末尾添加反斜杠\作为行延续符:

#!/bin/bash
find /home/core/backup \
  -mtime +2 \
  -type f \
  -exec rm -fv {} \;

额外优化建议

为了提高执行效率,可以将\;替换为+,这样find会将所有匹配的文件一次性传递给rm命令,而不是逐个调用:

find /home/core/backup -mtime +2 -type f -exec rm -fv {} +

常见错误排查

  • 确认脚本开头的shebang是#!/bin/bash,避免使用#!/bin/sh(部分系统中sh是bash的简化版,可能存在兼容性问题)
  • 检查分号是否正确转义:必须是\;,不能直接写;
  • 不要将-exec后的内容用单引号包裹(例如-exec 'rm -fv {} \;'),这会导致find无法识别参数

内容的提问来源于stack exchange,提问作者Sara

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.28 03:22:49