Recursive grepping
Sometimes you just need to grep
recursively in a directory. If you’re using find $somedir -type f -exec grep $somestring {} \;
, don’t:
Use xargs
to avoid creating a bazillion grep
processes:find $somedir -type f -print | xargs grep $somestring
But spaces in the output of find
(i.e., spaces in filenames) will confuse xargs
, so use -print0
and xargs -0
instead:find $somedir -type f -print0 | xargs -0 grep $somestring
Except that you can achieve the same effect with find
, with \+
:find $somedir -type f -exec grep $somestring {} \+
Or you can just use recursive grep:grep -r $somestring $somedir
except that find
allows you to filter by file type, name, age, etc.