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”, myös lainausmerkit. 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 korvaamiseksi tarvitset sed tai awk.
  • Joten olisiko se jotain
  • sed – rekursiivinen –ignore-case " merkkijono ", " korvaus -merkkijono "
  • Liittyy: etsi ja korvaa grepillä (ei sed) – 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ä haluan tehdä se palvelimen juurihakemistosta?
  • Esimerkiksi, jos korvaan " wavbyte " " gitship " alkaen 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 nämä sijainnit ja sitten mennä käsin ja vaihtaa gitshipiksi?
  • Jatka jatka tätä keskustelua chatissa .

Vastaa

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