Usando o Emacs para localizar e substituir recursivamente em arquivos de texto ainda não abertos

Como acompanhamento deessa questão, está tentando descobrir como fazer algo assim que deve ser fácil, o que me impede de me acostumar a usar o Emacs e, em vez disso, iniciar o editor com o qual já estou familiarizado. Eu uso o exemplo aqui com bastante frequência na edição de vários arquivos.

No Ultraedit, eu faria Alt + s e p para exibir uma caixa de diálogo com as opções: Localizar (inclui o uso de expressões regulares em várias linhas), Substituir por, Em Arquivos / Tipos, Diretório, Caso de correspondência, Corresponder apenas a palavra inteira, Lista Arquivos alterados e subdiretórios de pesquisa. Normalmente, primeiro uso o mouse para clicar e arrastar e selecionar o texto que quero substituir.

Usando apenas o próprio Emacs (no Windows XP), sem chamar nenhum utilitário externo, como substituir todo o foo \ nbar por bar \ nbaz no*.c e*.h arquivos em alguma pasta e todas as pastas abaixo dela. Talvez o Emacs não seja a melhor ferramenta para fazer isso, mas como isso pode ser feito facilmente com um comando mínimo?