Bash find xargs grep only single occurence

bashfindgrepxargs

Maybe it's a bit strange – and maybe there are other tools to do this but, well..

I am using the following classic bash command to find all files which contain some string:

find . -type f | xargs grep "something"

I have a great number of files, on multiple depths. first occurrence of "something" is enough for me, but find continues searching, and takes a long time to complete the rest of the files. What I would like to do is something like a "feedback" from grep back to find so that find could stop searching for more files. Is such a thing possible?

Best Answer

Simply keep it within the realm of find:

find . -type f -exec grep "something" {} \; -quit

This is how it works:

The -exec will work when the -type f will be true. And because grep returns 0 (success/true) when the -exec grep "something" has a match, the -quit will be triggered.

Related Question