<åt sidan class = "s-notice s-notice__info js-post-notice mb16" role = "status">
Den här frågan har redan svar här :
Kommentarer
- Du vill ha sed, inte grep. Du ' använder också " smart " citat, så grep söker efter bokstavlig sträng
“string”
, inklusive citat. Du vill ha"string"
(eller förmodligen ännu bättre,'string'
, såvida du inte planerar att använda parameterutvidgning i söktermen). -
grep
isn ' t används för att ersätta strängar. Det ' används för att hitta strängar. För att ersätta dem behöver dused
ellerawk
. - Så skulle det vara ungefär som
- sed –recursive –ignore-case " sträng ", " ersättning -sträng "
- Relaterat: sök och ersätt med grep (inte sed) – dock du kunde använda
grep --recursive --files-with-matches
för att skapa en lista med filnamn som ska skickas tillsed
Svar
Prova det här kommandot
grep -rl "wavbyte" somedir/ | xargs sed -i "s/wavbyte/gitship/g"
Du kan prova find
och sed
find /some_path -type f -exec sed -i "s/oldstring/newstring/g" {} \;
Kommentarer
- Byt jag ut " matchstring " med den nya eller gamla strängen och vad händer om jag vill att göra det från rotkatalogen på servern?
- Till exempel om jag byter ut " wavbyte " med " gitship " från rotkatalogen för Ubuntu-servern skulle det vara:
- hitta / -typ f -exec sed -i ' s / wavbyte / gitship / g ' {} \;
- Rätt, men wavbyte finns på många olika ställen på servern. Hur ska jag memorera alla dessa platser och sedan gå in för hand och byta till gitship?
- Låt oss fortsätta denna diskussion i chatt .