使用grep后接xargs执行时出现No such file or directory报错如何解决
解决方案
最优方案(从根源解决问题,无多余报错)
你出现报错的核心原因是xargs -0要求输入的内容以**NULL字符(\0)**作为分隔符,但你前序的grep默认以换行符分隔输出结果,导致xargs将整段输出(包含末尾的换行符)识别为单个文件名,触发不存在报错。
正确的写法是给grep添加-Z参数,让其输出的匹配结果以NULL字符分隔,完美适配xargs -0,可以正确处理所有含空格、换行等特殊字符的文件名:
grep -lrZ 'bash' /tmp | xargs -0 grep 'escape'
仅抑制报错输出的方案
如果你不需要解决根源问题,只想要隐藏No such file or directory这类报错,可以将标准错误流重定向到/dev/null即可:
# 该方法会屏蔽所有错误输出,包括合法的文件读取权限报错等,不推荐日常使用 grep -lr 'bash' /tmp | xargs -0 grep escape 2>/dev/null
内容的提问来源于stack exchange,提问作者showkey
相关产品推荐
相关产品推荐

