Tähän kysymykseen on jo annettu vastauksia :

Kommentit

  • Haluat sed, et grep. Lisäksi ' käytät " smart " lainauksia, joten grep etsii kirjaimellinen merkkijono “string”, lainausmerkit mukaan lukien. Haluat "string" (tai todennäköisesti vielä parempaa, 'string', ellet aio käyttää parametrilaajennusta hakutermissä).
  • grep ei ' t käytetä merkkijonojen korvaamiseen. Sitä ' käytettiin merkkijonojen etsimiseen. Niiden korvaamiseen tarvitaan sed tai awk.
  • Joten olisiko se jotain
  • sed – rekursiivinen –ignore-case " merkkijono ", " korvaava -merkkijono "
  • Aiheeseen liittyvä: etsi ja korvaa grepillä (ei sedillä) – kuitenkin voisit käyttää grep --recursive --files-with-matches rakennettaaksesi luettelon tiedostojen nimistä, jotka välitetään sed

Vastaa

Kokeile tätä komentoa

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

Voit kokeile find ja sed

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

kommentteja

  • Korvataanko " matchstring " uudella tai vanhalla merkkijonolla ja mitä jos haluan tehdä se palvelimen juurihakemistosta?
  • Esimerkiksi, jos korvaan " wavbyte " kanssa " gitship " olisiko se Ubuntu-palvelimen juurihakemisto:
  • etsi / -type f -exec sed -i ' s / wavbyte / gitship / g ' {} \;
  • Oikea, mutta wavbyte on palvelimen monissa eri paikoissa. Kuinka aion muistaa kaikki nuo sijainnit ja mennä sitten käsin ja vaihtaa gitshipiksi?
  • Jatka jatka tätä keskustelua chatissa .

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *