Combine find with bash -c instead of a script. We take file path and store it into file variable, then pass it further to other commands. First grep -q will check if there is one word/pattern that you want is present. Using its exit status, && will pass it on to second grep -q. If that command doesn't find a match, that means the string is not found, thus using its exit status , we pass it on to echo via || operator.
In the example below, only file2.txt contains abra but not cadabra word.
$ find -type f -exec bash -c 'file="$@";grep -q "abra" "$file" && grep -q "cadabra" "$file" || echo "$file" ' sh "{}" >
./file2.txt
$ ls
file1.txt file2.txt file 3.txt
$ cat file1.txt
abra cadabra
$ cat file2.txt
abra
$ cat file\ 3.txt
abra cadabra