需要在整个内容中搜索某些内容
我在尝试:
find . | xargs grep word
我收到错误:
xargs: unterminated quote
怎么做到这一点?
解决方法:
xargs期望以其他命令产生的格式输入,因此难以有效使用.这里出现的问题是你有一个文件,其名称必须在输入xargs时引用(可能包含’).
如果grep支持-r或-R选项进行递归搜索,请使用它.
grep -r word .
否则,请使用find的-exec primary.除了没有文件名约束之外,这是实现与xargs相同效果的常用方法.合理的最新版本的find允许您在一次调用辅助命令时对多个文件进行分组.将/ dev / null传递给grep可确保它在每个匹配前显示文件名,即使它恰好在单个文件上调用.
find . -type f -exec grep word /dev/null {} +
较旧版本的find(在较旧的系统或OpenBSD上,或简化的实用程序,如BusyBox)只能一次调用一个文件上的辅助命令.
find . -type f -exec grep word /dev/null {} \;
某些版本的find和xargs具有允许它们正确通信的扩展,使用空字符分隔文件名,因此不需要引用.目前,只有OpenBSD具有此功能而没有-exec … {}.
find . -type f -print0 | xargs -0 grep word /dev/null