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 tarvitsetsed
taiawk
. - 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äänsed
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 .