使用grep搜索find提供的文件:find有什么问题。 | xargs grep'…'?
题
当我使用命令时:
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>
不隶属于 StackOverflow