Dette spørsmålet har allerede svar her :

Kommentarer

  • Du vil ha sed, ikke grep. Du ' bruker " smarte " anførselstegn, så grep vil søke etter bokstavelig streng “string”, inkludert anførselstegn. Du vil ha "string" (eller sannsynligvis enda bedre, 'string', med mindre du planlegger å bruke parameterutvidelse i søkeordet).
  • grep isn ' t brukes til å erstatte strenger. Det ' brukes til å finne strenger. For å erstatte dem trenger du sed eller awk.
  • Så ville det være noe sånt som
  • sed –recursive –ignore-case " streng ", " erstatning -streng "
  • Relatert: søk og erstatt med grep (ikke sed) – dog du kunne bruke grep --recursive --files-with-matches til å lage en liste over filnavn som skal sendes til sed

Svar

Prøv denne kommandoen

grep -rl "wavbyte" somedir/ | xargs sed -i "s/wavbyte/gitship/g" 

Du kan prøv find og sed

find /some_path -type f -exec sed -i "s/oldstring/newstring/g" {} \; 

Kommentarer

  • Skifter jeg " matchstring " med den nye eller gamle strengen og hva om jeg vil å gjøre det fra rotkatalogen til serveren?
  • For eksempel hvis jeg erstatter " wavbyte " med " gitship " fra rotkatalogen til Ubuntu-serveren ville det være:
  • finn / -type f -exec sed -i ' s / wavbyte / gitship / g ' {} \;
  • Riktig, men wavbyte er mange forskjellige steder i serveren. Hvordan skal jeg huske alle disse stedene og deretter gå inn for hånd og bytte til gitship?
  • La oss fortsette denne diskusjonen i chat .

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *