xyz*_*xyz 20 linux shell grep find xargs
需要在整个内容中搜索某些内容
我在尝试:
find . | xargs grep word
Run Code Online (Sandbox Code Playgroud)
我得到错误:
xargs:未终止的报价
如何实现这一目标?
Gil*_*il' 23
xargs期望以其他命令无法生成的格式输入,因此很难有效使用。这里的问题是您有一个文件,其名称必须在输入时引用xargs(可能包含 a ')。
如果您的 grep 支持递归搜索的-ror-R选项,请使用它。
grep -r word .
Run Code Online (Sandbox Code Playgroud)
否则,使用 的-exec主要部分find。这是实现与 相同效果的常用方法xargs,但对文件名没有限制。合理的最新版本find允许您在一次调用辅助命令时将多个文件分组。传递/dev/nulltogrep确保它会在每个匹配项前面显示文件名,即使它碰巧在单个文件上调用。
find . -type f -exec grep word /dev/null {} +
Run Code Online (Sandbox Code Playgroud)
较旧版本的find(在较旧的系统或 OpenBSD 上,或简化的实用程序,例如 BusyBox)一次只能在一个文件上调用辅助命令。
find . -type f -exec grep word /dev/null {} \;
Run Code Online (Sandbox Code Playgroud)
某些版本的find和xargs具有允许它们正确通信的扩展名,使用空字符来分隔文件名,因此不需要引用。如今,只有 OpenBSD 具有此功能而没有-exec … {} +.
find . -type f -print0 | xargs -0 grep word /dev/null
Run Code Online (Sandbox Code Playgroud)
Fei*_*ila 12
我猜你是说第一个选项
grep 递归,用于搜索文件内的内容
grep -R "content_to_search" /path/to/directory
Run Code Online (Sandbox Code Playgroud)
ls 递归,用于搜索匹配的文件
ls -lR | grep "your_search"
Run Code Online (Sandbox Code Playgroud)