Erre a kérdésre már megvannak a válaszok :
megjegyzések
- Sed-et szeretne, nem grep-et. Ezenkívül ' a " intelligens " idézeteket használja, így a grep a szó szerinti karakterlánc
“string”
, az idézőjelekkel együtt. A következőre vágyik:"string"
(vagy valószínűleg még jobb,'string'
, hacsak nem tervezi a paraméterbővítés használatát a keresési kifejezésben). -
grep
nem ' nem használható a karakterláncok cseréjére. Ez ' karakterláncok keresésére szolgál. Helyettesítésükhözsed
vagyawk
kell. - Tehát valami ilyesmi lenne
- sed – rekurzív –ignore-case " string ", " csere -string "
- Kapcsolódó: keresés és helyettesítés a grep (nem sed) használatával – azonban használhatná a
grep --recursive --files-with-matches
felhasználót ased
Válasz
Próbálja ki ezt a parancsot
grep -rl "wavbyte" somedir/ | xargs sed -i "s/wavbyte/gitship/g"
Megteheti próbálkozzon find
és sed
find /some_path -type f -exec sed -i "s/oldstring/newstring/g" {} \;
megjegyzések
- Cserélhetem a " gyufaszalagot " az új vagy a régi karakterlánccal, és mi van, ha akarom hogy ezt a szerver gyökérkönyvtárából tegye?
- Például, ha a " wavbyte " " gitship " az Ubuntu szerver gyökérkönyvtára lenne:
- find / -type f -exec sed -i ' s / wavbyte / gitship / g ' {} \;
- Helyes, de a wavbyte a kiszolgálón nagyon sok helyen található. Hogyan fogom megjegyezni ezeket a helyszíneket, majd kézzel megyek át, és átállok a gitshipre?
- Folytassuk ezt a beszélgetést a csevegésben .