Procura por strings de texto dentro de um diretório e depois as substitui, via ssh [duplicate]

-1

Existe alguma maneira de pesquisar uma string de texto, por exemplo, Hello e substituí-la por, por exemplo, Hi em todos os arquivos de texto em uma estrutura de diretórios com MUITOS subdiretórios? Estou executando o servidor Ubuntu 17.04 x64.

    
por W.Scott7182 08.12.2017 / 11:46

2 respostas

3

Você tem que ssh na máquina remota e executar o comando descrito abaixo.

O comando a seguir substituirá todas as ocorrências de "Hello" em todos os arquivos dentro de um local específico (conforme sua escolha) por "Hi".

find /path/to/main/parent/directory -type f -exec sed -i 's/hello/hi/gI' {} \;

Nota

O que precede não faz distinção entre maiúsculas e minúsculas, se você quiser uma substituição sensível a maiúsculas e minúsculas, pode tentar remover I , ou seja. 's/Hello/Hi/g'

/path/to/main/parent/directory : você deve especificar o diretório pai a partir do qual seu arquivo contendo a string "Hello" é iniciado.

para URLs

Do comentário, vim a saber que você deseja substituir uma URL por outra que contenha :// Então, use o seguinte método para substituir as strings que contêm URL.

find /path/to/main/parent/directory -type f -exec sed -i 's,/URL1/,/URL2/,gI' {} \;
    
por Rooney 08.12.2017 / 12:33
1

Apenas outra opção usando grep -Rl em vez de encontrar:

grep -Rl 'hello' /path/to/main/parent/directory | xargs -n1 sed -i 's|hello|hi|g'
    
por RoVo 08.12.2017 / 13:37