Como realizar buscas e substituições em vários arquivos com o Emacs de uma só vez?

4

Eu estou procurando uma solução para como realizar uma pesquisa e substituir em todos os arquivos em um diretório usando o Emacs.

    
por Török Gábor 18.02.2010 / 14:00

2 respostas

7

Eu mesmo encontrei a solução. O Dired possui uma funcionalidade incorporada para fazer isso. Consulte o artigo Localizar e substituir interativamente padrões de seqüência em vários arquivos para obter mais detalhes.

    
por 18.02.2010 / 14:07
0

Como mencionado na outra resposta, você deverá usar dired .

Primeiro marque os arquivos usando a tecla m . Alternativamente, você pode usar % m to dired-mark-files-regexp (no caso de marcar todos os arquivos, coloque .* como seu regexp).

Você vai querer usar o % R to dired-do-rename-regexp . Isso limitará a renomeação da expressão regular aos arquivos marcados. Você terá que usar a sintaxe regexp do Emacs, que difere da sintaxe comum do UNIX.

Se eu tivesse vários arquivos em um diretório chamado:

 01.png
 02.png
 03.png
 04.png

E eu queria que eles fossem renomeados para que todos fossem prefixados com o capítulo 01, eu digitaria os seguintes pressionamentos de teclas.

% m - mark regexp
.*\.png - mark all png files
% R - rename regexp
\([0-9]+\)\(\.png\) - matching regexp, save the parens into variables
chapter-01- - utilizing the previous variables'
! - during the query to denote rename all the rest
    
por 18.02.2010 / 21:43