Dette spørgsmål har allerede svar her :

Kommentarer

  • Du vil have sed, ikke grep. Du ' bruger også " smart " citater, så grep søger efter bogstavelig streng “string”, inklusive citaterne. Du vil have "string" (eller sandsynligvis endnu bedre, 'string', medmindre du planlægger at bruge parameterudvidelse i søgeudtrykket).
  • grep isn ' t bruges til at erstatte strenge. Det ' bruges til at finde strenge. For at erstatte dem skal du have sed eller awk.
  • Så ville det være noget i retning af
  • sed –recursive –ignore-case " streng ", " erstatning -streng "
  • Relateret: søg og erstat ved hjælp af grep (ikke sed) – dog du kunne bruge grep --recursive --files-with-matches til at konstruere en liste med filnavne, der skal sendes til sed

Svar

Prøv denne kommando

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 streng, og hvad hvis jeg vil at gøre det fra rodmappen på serveren?
  • For eksempel hvis jeg erstatter " wavbyte " med " gitship " fra rodmappen på Ubuntu-serveren ville det være:
  • find / -type f -exec sed -i ' s / wavbyte / gitship / g ' {} \;
  • Højre, men wavbyte findes mange forskellige steder på serveren. Hvordan skal jeg huske alle disse steder og derefter gå ind i hånden og skifte til gitship?
  • Lad os fortsætte denne diskussion i chat .

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *