参考http://www.cocoachina.com/articles/50268
有时我们执行find ./ -name "xxx"|xargs grep -rn "xxx"失效,无法显示任何内容;
有可能的原因是:
1.文件权限
2.文件为符号链接
3.文件路径
关于文件路径,包含空格或“-”或反斜杠的目录,是问题所在. xargs按空格分割其输出,并且还解释引号,反斜杠,甚至_字符,因此文件或目录名称中的空格会导致它将不完整的文件名传递给grep
要解决此问题,请将find -print0与xargs -0结合使用,如下所示:
find . -name "xxx" -print0 2>/dev/null | xargs -0 grep -rn "xxx" 2>/dev/null
-print0选项告诉find使用二进制0字符分隔文件名,该字符不能出现在有效的文件名中.相应的-0选项告诉part使用相同的字符作为分隔符,也不解释引号和反斜杠.