Quero saber como encontrar e substituir um texto específico em vários arquivos, como no Notepad ++ no tutorial vinculado.
por exemplo: http://cybernetnews.com/find-replace-multiple-files/
text-editor
Faruk Uzun
fonte
fonte
Respostas:
Aqui, uso o sed para substituir todas as ocorrências da palavra "cybernetnews" por "cybernet" em todos os arquivos com a extensão c, no diretório / home / user / directory /.
Uma variação mais genérica na qual você pesquisa recursivamente a partir do diretório de execução e opera apenas em arquivos regulares, legíveis e graváveis:
fonte
cyber net news
? Como posso converter isso paracyber net
?sed -i -e "s/cyber\snet\snews/cyber net/g"
O editor de fluxo, sed, é um utilitário poderoso para esse tipo de trabalho e é a minha primeira escolha, no entanto, se você quiser fazer isso a partir de um editor de texto comum usando um aplicativo nativo baseado no Ubuntu, sugiro que você analise o Jedit , Está disponível nos repositórios e pode ser instalado digitando no seu console:
Inicie o jedit, clique no item de menu Pesquisar, na lista de menus, clique no item Pesquisar no Diretório, você verá a caixa de diálogo abaixo:
Isso é semelhante ao do Notepad ++ e faz a mesma coisa, acredito que é isso que você deseja.
fonte
sed
.Outra opção da GUI é o regexxer :
fonte
substitui qualquer ocorrência de texto antigo por texto novo em todos os arquivos na pasta atual. No entanto, você terá que escapar de todos os caracteres especiais perl no texto antigo e no novo texto usando a barra invertida.
fonte
Verifique com o Geany , é o substituto perfeito da NPP para Linux. Você pode fazer exatamente isso e usar a regex.
fonte
Eu escrevi um pequeno roteiro para essa coisa. Se você só precisa do básico e não está familiarizado com o sed etc, dê uma olhada aqui: http://www.csrdu.org/nauman/2010/12/30/bash-script-to-find-and-replace-in -um-conjunto-de-arquivos /
O script é o seguinte:
fonte
Você pode usar esse script, copiar código e criar um arquivo
find_and_replace_in_files.sh
.Eu o modifiquei um pouco; por favor me diga sua opinião.
fonte
Outro programa é o Searchmonkey .
fonte
funciona para mim no fedora
fonte
sed
instâncias! Portanto, é muito mais rápido em termos de tempo de CPU. Como o tempo de acesso ao arquivo seria limitado, acho que não é muito mais rápido no tempo do relógio, mas reduz a carga do sistema. O Notexargs
colocará muitos nomes de arquivos, como hunters, na linha de comando de um únicosed
comando - preenchendo o tamanho do buffer disponível com base no comprimento dos caminhos.+
vez de\;
emfind
, certo?xargs
, mas você está certo; deman find
:-exec command {} +
: ...The command line is built in much the same way that xargs...
. Me faz pensar em linhas de comandogit filter-branch
...;)Uma solução muito simples: substitua em todos os
*.txt
arquivos da pastastring_1
porstring_2
:fonte
sed -i 's/string_1/string_2/g' $(grep -rEl 'string_1' ./)