#!/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