Procura e substitui a substring por outra em todos os arquivos de uma pasta e todas as suas subpastas

1

Eu sei que há várias perguntas como esta, mas a minha é específica:

Eu quero substituir a substring: localhost:8000/ with https://www.begueradj.com/ em todos os arquivos HTML existentes em uma pasta e em suas subpastas.

Os / e // estão me causando problemas nessa situação.

Alguma dica?

Editar:

A tentativa que tentei trabalhar mais é a descrita aqui .

Mas qualquer outra abordagem eficaz é bem-vinda.

    
por Billal Begueradj 01.02.2018 / 20:27

1 resposta

2

Existem (pelo menos) duas coisas para melhorar aqui:

  • usando for em uma lista de nomes de arquivos gerados por outro comando tende a quebrar de maneiras bastante interessantes se os nomes de arquivos contiverem caracteres de espaço ou pior
  • as aspas que você usa em sed são ímpares

Tente

find . -name '*.html' -print0 | 
    xargs -0 sed -i 's|localhost:8000|https://www.begueradj.com/|'

A opção -print0 de find garantirá que todos os nomes passados para xargs sejam terminados em NUL.

    
por 01.02.2018 / 21:01