Ubuntu substitui expressão em dir e todos os subdiretórios


0

Como posso substituir uma expressão que tem uma barra com outra em todos os diretórios e subdiretórios?

Eu usei isso para encontrar: grep -rnw "/var/www/site" -e "app/COD1"

E agora eu quero substituir: "app / COD1" por "app2 / COD2" em todos os arquivos.

Eu cd para o diretório / var / www / site e tentei com: sed -i 's,app/COD1,app2/COD2,g' * e sed -i 's/'app/ABC'/'apps/ABC'/g' * sem sorte ...

Respostas:


0

Você precisa da -eopção de especificar um comando na linha de comandos. Dado isso, o seguinte funciona para mim:

$ cat file.txt
app/COD1
app/COD2
app2/COD1
app/COD1
app/COD1
$ sed -i -e "s,app/COD1,app2/COD2,g" file.txt
$ cat file.txt
app2/COD2
app/COD2
app2/COD1
app2/COD2
app2/COD2

O uso de barras invertidas também funciona, caso você esteja substituindo algo que pode ter vírgulas (ou qualquer delimitador que você escolher):

$ sed -i -e "s/app\\/COD1/app2\\/COD2/" file.txt

Olá, o código funciona para um arquivo, mas, como afirmei no título, preciso substituir essa sequência em todos os arquivos de um diretório e todos os subdiretórios. Eu cansei de sed -i -e "s, app / COD1, app2 / COD2, g" *, mas recebo um erro na primeira pasta encontrada: sed: não foi possível editar o bin: não é um arquivo comum
danny2015

mas funciona assim :) grep -rl 'app / COD1' / var / www / site | xargs sed -i-e "s, app / COD1, app2 / COD2, g"
danny2015

@ danny2015 Ok, sim, eu deveria ter me expandido para fornecer uma solução "completa" usando xargsou while read, embora não tenha percebido que essa era a parte que estava lhe causando problemas. Se você incluísse o erro do seu primeiro comentário acima na pergunta em si, o que tornaria mais claro o problema que estava vendo, "sem sorte" não é muito útil. Ainda bem que minha resposta ajudou um pouco.
blm

0
grep -rl 'app/ABC' /opt/apps/ABC | xargs sed -i -e "s,app/ABC,apps/ABC,g"

Parabéns por resolver seu problema. No entanto, mesmo que você esteja respondendo sua própria pergunta, preferimos que as respostas contenham alguma explicação.
Scott
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.