maniu@securebrain.com:~/script# vi cambia_stringa.sh



#!/bin/sh
# sostituisce tutte le istanze di una stringa con una nuova stringa

echo -e "\\e[1;32mInserisci la stringa che devi sostituire :\\e[0m"
read SCADUTO rest
echo -e "\\e[1;32mInserisci la stringa nuova :\\e[0m"
read NUOVO rest

SCADUTO=`expr "$targetdir" : "\(.*\)/$" "|" $SCADUTO`
NUOVO=`expr "$targetdir" : "\(.*\)/$" "|" $NUOVO`

echo -e "\\e[1;32mci mettera' un po'...\\e[0m"

DIRPWD=`pwd`

# se il file esiste lo svuota, se non esiste lo crea vuoto
cat /dev/null > $DIRPWD/incriminati.txt

# cerca i file che contengono tutte le istanze della stringa $SCADUTO a partire da /
find / -type f -exec grep -l $SCADUTO {} \; |grep -v $DIRPWD/cambia_stringa.sh >> $DIRPWD/incriminati.txt

NUMF=`wc -l $DIRPWD/incriminati.txt |cut -f 1 -d ' '`

if [ $NUMF -gt 30 ]
   then echo "\\e[1;32mi $NUMF file che contengono la stringa '$SCADUTO' si trovano in $DIRPWD/incriminati.\\e[0m"
else
       if [ $NUMF -eq 0 ]
         then echo -e "\\e[1;32mnessun file contiene la stringa '$SCADUTO'\\e[0m"; exit
       else
         echo -e "\\e[1;32mi $NUMF file che contengono la stringa '$SCADUTO' sono :\\e[0m" ; cat $DIRPWD/incriminati.txt
       fi
fi

echo -e "\\e[1;32mse vuoi che uno dei file non venga modificato, puoi eliminarlo adesso da $DIRPWD/incriminati.txt\\e[0m"
echo -ne "\\e[1;32mVuoi apportare le modifiche sulla stringa '$SCADUTO' ? [y/n] :\\e[0m\n"
read yn
if [ $yn = y ]
  then for i in `cat $DIRPWD/incriminati.txt`
       do
       echo "-------------------------------> $i";
       sed "s/$SCADUTO/$NUOVO/g" $i > $i.new;
       mv $i $i.old;
       mv $i.new $i;
   done
else
echo -e "\\e[1;32mil file $DIRPWD/incriminati.txt non e' stato eliminato\\e[0m"
exit 1
fi




:q!