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, è necessario sed o awk.
  • 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 a sed

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 .

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *