当我使用命令时:

find . | xargs grep '...'

我得到错误的比赛。我正在尝试在当前文件夹中的所有文件中搜索字符串 ...

有帮助吗?

解决方案

正如安迪怀特所说,你必须使用 fgrep 来匹配普通的,或者逃避这些点。

所以你必须写( -type f 只有文件:你显然不想要这些目录。):

find . -type f | xargs fgrep '...'

或者你还想使用grep:

find . -type f | xargs grep '\.\.\.'

如果您只想要当前目录而不是其子目录:

find . -maxdepth 1 -type f | xargs fgrep '...'

其他提示

''匹配任何字符,因此您将找到包含3个或更多字符的所有行。

你可以逃脱点,像这样:

find . | xargs grep '\.\.\.'

或者您可以使用fgrep,它执行文字匹配而不是正则表达式匹配:

find . | xargs fgrep '...'

(某些版本的grep也接受-F标志,这使得它们的行为类似于fgrep。)

@OP,如果您要查找包含...,

的文件
grep -R "\.\.\." *

如果您确实输入 grep'...',那么您将匹配任何字符串。我怀疑你实际上是在为你的grep命令输入'...',但如果你是, ... 将匹配任何三个字符。

请发布有关您所搜索内容的更多信息,也许有人可以为您提供更多帮助。

如果您要查找匹配的文件名,请尝试:

find . -name "filename pattern" 

find . | grep "filename pattern"

如果您正在寻找匹配的文件(即它包含grep字符串)

find . | xargs grep "string pattern"

工作正常。或者简单地说:

grep "string pattern" -R *

要完成Jeremy的回答,您可能还想尝试

find . -type f | xargs grep 'your_pattern'

find . -type f -exec grep 'your_pattern' {} +

类似于xargs

我可能会补充:RTFM!或者以更礼貌的方式:使用&滥用

man command

<!/ P>

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top