Na verdade, sugiro que você faça dessa uma operação em DOIS passos:
-
Encontre os arquivos com o nome de host antigo e o IP antigo:
find / -print | xargs egrep -l 'oldhost|10.10.10.10' > filelist
-
Em seguida, edite a lista resultante e remova todas as informações que você saiba que não devem ser alteradas.
-
Em seguida, use a lista resultante, coloque-a em um shell script e faça algo como a seguinte sequência de comandos usando a lista de arquivos como entrada:
.
cp filename filename.20110624 # lets be safe!
if test $? -ne 0
then
echo 'filename copy bad'
exit 1
fi
cat filename.20110624 | sed 's/oldhost/newhost/g
s/10.10.10.10/10.20.20.20/g' > filename # the newline between commands is needed
if test $? -ne 0
then
echo edit failed
cp filename.20110624 filename
if test $? -ne 0
then
echo unable to restore filename
exit 1
fi
exit 1
fi
exit 0