find命令报错:find: 遗漏“-exec”的参数 解决方案

find命令报错:find: 遗漏“-exec”的参数 解决方案

今天在执行find . -type f -size 0 -exec rm -rf {}\;命令删除空文件的时候,包错误:find: 遗漏“-exec”的参数

解决办法:

{}后面还需要加个空格 find . -type f -size 0 -exec rm -rf {} \;
### Makefile 中遗漏分隔符错误的解决方案 Makefile 是一种用于自动化构建软件项目的工具配置文件,在编写过程中如果格式不正确,可能会引发诸如“遗漏分隔符”的错误。以下是针对该问题的具体分析和解决办法。 #### 1. **Tab 分隔符的重要性** 在 Makefile 文件中,每一条命令行都必须以 Tab 字符作为前导字符,而不是空格。这是由于 GNU `make` 工具的设计决定的,它将 Tab 视为命令行的标志[^1]。 例如,以下是一个典型的 Makefile 片段: ```makefile all: gcc -o helloworld helloworld.c ``` 如果没有使用 Tab 而是使用了空格,则会出现如下错误提示: ``` makefile:2: *** 遗漏分隔符。停止。 ``` 因此,确保每一行命令均以前置 Tab 开始是非常重要的。 --- #### 2. **避免注释干扰** 某些情况下,开发者可能尝试通过 C 风格的注释 (`/* ... */`) 来临时禁用部分代码片段。然而,这种做法可能导致意外行为,因为 Makefile 并不会忽略这些被注释掉的内容。如果注释内部包含了语法错误或者未预期的结构,同样会触发“遗漏分隔符”错误[^2]。 建议的做法是完全移除不需要的部分或将整行替换为井号 (`#`) 注释形式。例如: ```makefile # gcc -o test test.c ``` --- #### 3. **检查变量定义与赋值** 除了命令行外,还需要注意的是,Makefile 的变量定义语句不应以 Tab 或任何其他空白字符开头。否则,`make` 可能误解其为命令报错[^3]。 正确的写法应类似于下面这样: ```makefile CC = gcc CFLAGS = -Wall -O2 TARGET = program SOURCES = main.c utils.c OBJECTS = $(SOURCES:.c=.o) $(TARGET): $(OBJECTS) $(CC) $(CFLAGS) -o $@ $^ ``` 在此例子中,`CC`, `CFLAGS`, 和其他变量都没有多余的缩进。 --- #### 4. **清理旧版生成物** 当修改现有 Makefile 后仍然遭遇相同错误时,可能是之前编译过程遗留下来的中间产物影响到了当前环境。特别是子目录下的 `.dSYM`、`.o` 文件或其他缓存数据[^4]。可以考虑执行以下操作清除残留项后再重新运行 `make`: ```bash find . -name "*.o" -delete find . -name "*.dSYM" -exec rm -rf {} \; ``` 随后再次调用 `make` 进行验证。 --- #### 总结 综上所述,“遗漏分隔符”这一类错误通常源于以下几个方面的问题: - 使用空格替代 Tab; - 不恰当的注释方式引入隐藏冲突; - 错误放置了带有特殊含义的关键字或符号; - 编辑器设置不当导致隐含字符差异; 遵循以上指导原则调整相应位置即可有效解决问题。 ---
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值