Localizando todos os arquivos regulares com nomes de arquivos correspondentes a *.php em ou abaixo de /data/my_project que contenham AAA , mas não BBB , e armazenando os nomes de caminho em /tmp/class_list.txt :
find /data/my_project -type f -name '*.php' \
-exec grep -qF 'AAA' {} ';' \
! -exec grep -qF 'BBB' {} ';' \
-print >/tmp/class_list.txt