On Fri, Oct 10, 2008 at 7:19 AM, Eric Sisolak haldir.junk@gmail.com wrote:
On Wed, Oct 8, 2008 at 9:49 PM, tony.chamberlain@lemko.com wrote:
Basically I want to find all files with a string (except binary) and change it. let STR be the string I am looking for. NEW is new string.
Hmm, why not ditch find entirely, and just use grep? Something like:
TFIL=/usr/tmp/dummy$$.txt
grep -Ilr "$STR" * > $TFIL
for fil in $( cat $TFIL); do sed -i "s/$STR/$NEW/g" $fil done
That should work, but unless you actually need to see the file list, you can do this in one command:
for fil in `grep -Ilr "$STR" *`; do sed -i "s/$STR/$NEW/g" $fil; done
If you really need the file list separately, you can use `grep -Ilr "$STR" * | tee $TFIL` to get the same effect.
Note that this will not necessarily work with specific sets of files (as opposed to '*').
mhr