child_process给出执行grep命令失败

我想在节点中使用child_process来search文件的存在:

 const { exec } = require('child_process'); exec('ls | grep "filename"', (err, result) => {...}) 

当文件名存在时,exec结果是好的。 但是当文件名不存在时,我得到一个错误:

命令失败:ls | grep“文件名”

在这种情况下,如何判断是执行命令时是否有错误,或者只是因为没有find结果?

编辑

感谢您不要以这种方式search文件的build议。 上面的代码不是实际的代码,只是一个演示我的问题与grep的演示文稿。 在我的实际案例中,我正在通过任务假脱机程序在输出中search关键字,因此我使用了exectsp -l | grep ... tsp -l | grep ...

您可以通过查看callback中的err.code的值来确定这一点。 它在Node.js文档中有更详细的logging。

由于pipe道中的最后一个命令是grep ,请查阅grep页以获取完整的状态代码列表,以便恰当地分配您的逻辑。 在你的情况下,如果没有select行 (即“没有结果”), grep将返回1的状态码,所以如果err.code === 1 ,那么你知道没有文件匹配。

注意:正如@CharlesDuffy所提到的那样,应该通过Node.js 文件系统API实现所需的文件操作。 利用这个答案作为exec 明确需要的情况的替代scheme。