Questa domanda ha già una risposta qui :
Commenti
- Vuoi sed, non grep. Inoltre, ' stai utilizzando " smart " virgolette, quindi grep cercherà il stringa letterale
“string”
, comprese le virgolette. Vuoi"string"
(o probabilmente anche meglio,'string'
, a meno che tu non preveda di utilizzare lespansione dei parametri nel termine di ricerca). -
grep
' non viene utilizzato per sostituire le stringhe. ' è utilizzato per trovare le stringhe. Per sostituirli, è necessariosed
oawk
. - Quindi sarebbe qualcosa di simile
- sed –recursive –ignore-case " string ", " sostituzione -string "
- Correlato: cerca e sostituisci utilizzando grep (non sed) – tuttavia potresti utilizzare
grep --recursive --files-with-matches
per creare un elenco di nomi di file da passare ased
Risposta
Prova questo comando
grep -rl "wavbyte" somedir/ | xargs sed -i "s/wavbyte/gitship/g"
Puoi prova find
e sed
find /some_path -type f -exec sed -i "s/oldstring/newstring/g" {} \;
Commenti
- Devo sostituire " matchstring " con la nuova o vecchia stringa e se voglio per farlo dalla directory principale del server?
- Ad esempio, se sto sostituendo " wavbyte " con " gitship " da la directory principale del server Ubuntu sarebbe:
- find / -type f -exec sed -i ' s / wavbyte / gitship / g ' {} \;
- Esatto, ma wavbyte si trova in molti posti diversi nel server. Come faccio a memorizzare tutti questi luoghi e poi entrare manualmente e passare a gitship?
- Lascia che continui questa discussione in chat .