Regex 使用grep搜索find提供的文件:find有什么问题xargs grep'';?
当我使用命令时:Regex 使用grep搜索find提供的文件:find有什么问题xargs grep'';?,regex,linux,console,find,command,Regex,Linux,Console,Find,Command,当我使用命令时: find . | xargs grep '...' 我拿错了火柴。我正在尝试在当前文件夹中的所有文件中搜索字符串…。如果您按字面意思键入grep'…',则几乎可以匹配任何字符串。我怀疑您实际上是在为grep命令键入“…”,但如果是,则…将匹配任意三个字符 请发布有关您搜索内容的更多信息,也许有人可以为您提供更多帮助。如果您要查找匹配的文件名,请尝试: find . -name "filename pattern" 或 如果您正在查找匹配的文件(即它包含grep字符串) 很
find . | xargs grep '...'
我拿错了火柴。我正在尝试在当前文件夹中的所有文件中搜索字符串
…
。如果您按字面意思键入grep'…'
,则几乎可以匹配任何字符串。我怀疑您实际上是在为grep命令键入“…”
,但如果是,则…
将匹配任意三个字符
请发布有关您搜索内容的更多信息,也许有人可以为您提供更多帮助。如果您要查找匹配的文件名,请尝试:
find . -name "filename pattern"
或
如果您正在查找匹配的文件(即它包含grep字符串)
很好。或者简单地说:
grep "string pattern" -R *
正如Andy White所说,您必须使用
fgrep
,以匹配普通
,或避开点
因此,您必须编写(-type f
只包含文件:您显然不需要目录):
或者,如果您仍然想使用grep:
find . -type f | xargs grep '\.\.\.'
如果您只需要当前目录,而不需要其子目录:
find . -maxdepth 1 -type f | xargs fgrep '...'
“.”匹配任何字符,因此您将查找包含3个或更多字符的所有行 你可以避开这些点,如下所示:
find . | xargs grep '\.\.\.'
或者可以使用fgrep,它执行文字匹配而不是正则表达式匹配:
find . | xargs fgrep '...'
(某些版本的grep也接受-F标志,这使它们的行为类似于fgrep。)要完成Jeremy的回答,您也可以尝试一下
find . -type f | xargs grep 'your_pattern'
或
这类似于xargs
我可以加上:RTFM!或者以更礼貌的方式:使用和滥用
man command
! @OP,如果您正在查找包含
grep -R "\.\.\." *
然后,首先,你必须学会如何恰当地提问。从技术上讲,这没有什么问题。问题是你想做什么。描述得恰当清楚你的意思是,我得到的答案是什么?你确定grep-R不是你要找的吗?@ghostdog74我赞赏你的机智。我肯定只是在脑海中用“废话废话废话”取代了“…”。哦,是的,我正在寻找以字符串形式包含“…”的文件,但是:1。找到xargs grep“字符串模式”或2。grep“字符串模式”-R*没有帮助。更礼貌?阅读友好手册?这怎么会被认为是不礼貌的呢?有礼貌的怪人。:)手册页确实非常友好,并且期待着被再次阅读&再次阅读。(你让我开心,杰里米XD)时间越晚,我的评论似乎越令人讨厌。我想我现在达到顶峰了。从这里开始一切都是下坡路。我向你保证我不会因为你叫我怪胎而起诉你。你当然不会。“那么我就反诉你粗心大意、令人厌恶地使用了经济上的脏话。”@Hasturkun:是的。我只是倾向于选择不同的命令名而不是额外的选项(比如使用
gunzip
而不是gzip-d
)。通常只是口味的问题。应该注意的是,fgrep
和egrep
已经被使用了。此外,彻底使用grep
,无论如何都应该习惯于使用选项。然而,使用什么仍然是主观的,这是迄今为止最简单的解决方案。grep内置了递归文件搜索功能。
find . -type f | xargs grep 'your_pattern'
find . -type f -exec grep 'your_pattern' {} +
man command
grep -R "\.\.\." *