On Mon, Feb 21, 2011 at 7:01 PM, Philip Guenther <guent...@gmail.com> wrote:
> 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:
>
> B  find . -name '*.c' -exec grep bla {} /dev/null \;
>
> That works with the xargs case too:
>
> B find . -name '*.c' -print0 | xargs -0 grep bla /dev/null

these two ugly hacks and the the redundant flag have been sought while
what's natural has been overlooked

find . -name '*.c' -exec awk '/bla/ {print FILENAME $0}'

why complicate grep?

>
>
> Philip Guenther

Reply via email to