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