O título da pergunta diz "arquivos contendo" uma palavra. No entanto, na sua pergunta, você menciona "obter os nomes de arquivo contendo" uma palavra. Essas são coisas diferentes. Felizmente, ambos são bem simples, então vou mostrar a vocês dois.
Para encontrar arquivos que contenham uma palavra:
grep -iR "word1" .
O -i diz para ignorar o caso. O -R é recursivo (ou seja, os subdiretórios são pesquisados). (A letra maiúscula é documentada pelo OpenBSD e mais similar a ls, então eu prefiro o over -r.) O período especifica onde começar a procurar.
Para encontrar nomes de arquivos contendo uma palavra:
find . -iname "word1"
O -iname é uma versão de "nome" insensível a maiúsculas e minúsculas.
O período especifica onde começar a procurar. O diretório atual costuma ser uma boa escolha.
Observação: você fez referência a ". " em um dos seus exemplos. Isso foi ótimo para o DOS, e normalmente bom no Microsoft Windows, mas é um péssimo hábito para o ambiente Unix. Vendo isso me faz pensar que você está familiarizado com o Windows. Bem, entenda que no Windows, "FIND" (ou "find") localiza o texto nos arquivos. Unix é diferente: "grep" localiza texto em arquivos, e "find" localiza nomes de arquivos.
Agora, para excluir a palavra 99 e colocar isso em um arquivo de texto, adicione o seguinte texto:
| grep -v word99 >> output.txt
Esta é a chave do pipe, quase sempre Shift-Backslash.
Então, por exemplo, se você quiser fazer as duas coisas, use:
grep -iR "word1" . | grep -v word99 >> output.txt
find . -iname "word1" | grep -v word99 >> output.txt
A parte antes do caractere pipe executará um comando e enviará a saída para um pipe no estilo Unix. Em seguida, o conteúdo é enviado do pipe para a entrada padrão do próximo comando. grep -v examinará a entrada padrão que recebe e excluirá o que você deseja. grep -v enviará os resultados restantes para sua saída padrão. O > > irá redirecionar a saída padrão do comando anterior para o final do arquivo de texto especificado.
O motivo pelo qual você não vê opções documentadas no comando "find", sobre como excluir texto, é que o Unix foi muito elaborado com essa idéia de criar programas mais simples e usar a técnica de piping para causar efeitos elaborados. . Nos ambientes da Microsoft, o código antigo da Microsoft era particularmente mais complicado com o manuseio de tubos, de modo que os programas basicamente tentavam incorporar mais funcionalidades em cada programa. Por um lado, isso parece mais simples para o usuário final (tendo tudo embutido), mas essa abordagem não tem consistência. Quando você estiver usando o Unix, não tenha medo da tubulação: uma vez que você se acostumar com isso, você pode achar que isso simplifica muito as coisas, mas porque você pode usar suas ferramentas simples em muitas situações, e então você não precisa para re-aprender técnicas simples repetidamente (para cada programa diferente).