Esta pergunta já tem respostas aqui :
Comentários
- Você quer sed, não grep. Além disso, você ' está usando aspas " inteligentes ", então o grep pesquisará o string literal
“string”
, incluindo as aspas. Você deseja"string"
(ou provavelmente ainda melhor,'string'
, a menos que planeje usar a expansão de parâmetro no termo de pesquisa). -
grep
isn ' t usado para substituir strings. É ' é usado para localizar strings. Para substituí-los, você precisa desed
ouawk
. - Seria algo como
- sed –recursive –ignore-case " string ", " substituição -string "
- Relacionado: pesquise e substitua usando grep (não sed) – no entanto você poderia usar
grep --recursive --files-with-matches
para construir uma lista de nomes de arquivo a serem passados parased
Resposta
Tente este comando
grep -rl "wavbyte" somedir/ | xargs sed -i "s/wavbyte/gitship/g"
Você pode tente find
e sed
find /some_path -type f -exec sed -i "s/oldstring/newstring/g" {} \;
Comentários
- Devo substituir " matchstring " pela string nova ou antiga e se eu quiser fazer a partir do diretório raiz do servidor?
- Por exemplo, se eu estiver substituindo " wavbyte " com " gitship " de o diretório raiz do servidor Ubuntu seria:
- find / -type f -exec sed -i ' s / wavbyte / gitship / g ' {} \;
- Certo, mas o wavbyte está em muitos lugares diferentes no servidor. Como vou memorizar todos esses locais e, em seguida, ir manualmente e mudar para gitship?
- Vamos continuar essa discussão no chat .