find . -name '*.py'
o -name
teste procura um padrão, como todos os arquivos que terminam em .py
. Mas find
pode fazer muito mais com outras condições de teste, incluindo -regex
testes. Corre find --help
para ver a infinidade de opções.
Ajuste ainda mais sua pesquisa usando grep
para obter apenas os arquivos que contêm a string que você deseja alterar, por exemplo, adicionando:
grep -le '<a whale>'
o -l
opção dá-lhe apenas os nomes de arquivo para todos os arquivos que contêm um padrão (denotado com -e
) que correspondem a “uma baleia”.
Você também pode usar o impressionante :bufdo
que permite que você execute o mesmo comando em vários buffers. Ele trabalha interativamente com todos esses arquivos sem o tédio de abrir, salvar e fechar cada arquivo, um de cada vez.
Vamos conectar seu poderoso find
+grep
resulta no Vim com:
vim `find . -name '*.py' -exec grep -le '<a whale>' {} ;`
Usar a expansão de backtick para passar nossa pesquisa ao Vim abre vários buffers prontos para uso. (Faz :h backtick-expansion
no Vim para mais.)
Agora você pode aplicar o comando Vim :bufdo
a todos esses arquivos e execute ações como pesquisa e substituição interativas:
:bufdo %s/a whale/a bowl of petunias/gce
o g
para “global” mudará as ocorrências do padrão em todas as linhas. o e
irá omitir erros se o padrão não for encontrado. o c
opção torna isso interativo. Se você estiver se sentindo confiante, pode omiti-lo para fazer as alterações sem revisar cada uma.
Quando terminar de passar por todos os buffers, salve todo o trabalho concluído com:
:bufdo wq!
Em seguida, aproveite a glória de seu tempo e esforço economizados.