On Mon, Feb 21, 2011 at 2:30 PM, Fred Crowson <open...@crowsons.net> wrote:
> On 02/21/11 15:54, Alexander Schrijver wrote:
...
>> grep(1) only prints the filename when it receives more then 1 filename as
>> arguments. Thus, when you do this:
>>
>> $ find . -name '*.c' -exec grep bla {} \;
>>
>> It doesn't print the filename.
>>
>> But when you use xargs(1), like Bret suggests it does.
>
> $ find . -name "*.php" -exec grep blah {} \; -print
>
> Will print the file name after the line that grep matches.

The other classical solution is to always pass multiple filenames by
including a /dev/null argument:

   find . -name '*.c' -exec grep bla {} /dev/null \;

That works with the xargs case too:

  find . -name '*.c' -print0 | xargs -0 grep bla /dev/null


Philip Guenther

Reply via email to