grep -rli 'fresh.*fish' root_directory_to_search > fishy_list
That should catch the files that you want. I'm assuming GNU grep of course.
It is not perfect though - if someone broke fresh and fish onto separate lines, it will miss that. Ditto if someone had "Fish, Fresh". Also there are ways to code links which will be missed. (In one file you have a function that takes a code name and returns a link for that item, complete with name, in another file you ask for code 12344, which is fresh fish. You'll have to look for 12344 as well...) And it will catch all of the files with references to things like "Fresh water fishing getaways".
Yeah, yeah, you were looking for the find solution that I know about but never use so my fingers don't know it. After glancing at the man pages,
find -type f -print | xargs grep -li fresh.*fish
Note that using xargs that way lessens the overhead of starting lots of copies of grep.And yes, I would know enough to pick an int for that problem (assuming that you are on a 32-bit or better platform).
Cheers,
Ben