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

0

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

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

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

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

    
por danny2015 30.12.2015 / 18:06

2 respostas

0

Você precisa da opção -e para especificar um comando na linha de comando. 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 possa ter vírgulas (ou qualquer outro delimitador escolhido):

$ sed -i -e "s/app\/COD1/app2\/COD2/" file.txt
    
por 30.12.2015 / 19:16
0
grep -rl 'app/ABC' /opt/apps/ABC | xargs sed -i -e "s,app/ABC,apps/ABC,g"
    
por 30.12.2015 / 22:51