One-line global string replace in all files with sed (or awk?)
keramida at ceid.upatras.gr
Wed Jan 26 10:14:11 PST 2005
On 2005-01-26 16:55, Miguel Mendez <flynn at energyhq.es.eu.org> wrote:
> On Wed, 26 Jan 2005 16:43:25 +0100
> Anthony Atkielski <atkielski.anthony at wanadoo.fr> wrote:
>> A few years ago, I'm sure I came across a one-line way of replacing
>> every occurence of one string with another in an entire directory of
>> files (potentially including all subdirectories as well). I think it
>> used sed or awk. Now I can't find it. The examples on the Web are all
>> multiline scripts or programs, but I'm sure I saw a way to do it all on
>> just one line.
>> Can anyone tell me how to do this?
> How about something like this (sh style)...
> for i in `find . -type f`; do sed -i -e 's/string1/string2/g' $i; done
Nope. This will potentially overflow the command line limit of some
shells and fail. The best way I know is to use find/xargs/sed:
find . -type f | xargs sed -i '' -e 's/foo/bar/g'
More information about the freebsd-questions