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