1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
| navig() {
COMPTEUR_JOURNAL=$2;
COMPTEUR_DOSSIER=0;
#CE COMPTEUR SERVIRA A SELECTIONNER LE NOMBRE DE DOSSIER DU FICHIER JOURNAL A EXPLORER !
#CELA EVITERA DE RE-UTILISER LES DOSSIERS SUPERIEURS
echo -e " début de navig : on est dans $1";
# ON PLACE LE CONTENU DU REPERTOIRE COURANT DANS LE JOURNAL TEMPORAIRE
ls -l $1 > /usr/project/sources/journal_tmp1;
#ON INSCRIT TOUS LES REPERTOIRES DU REP COURANT DANS LE JOURNAL A PARTIR DU JOURNAL TEMPORAIRE
COMPTEUR_DOSSIER=`expr $COMPTEUR_JOURNAL`
awk -v REP="$1" -v COMPTEUR_JOURNAL_AWK=$COMPTEUR_JOURNAL 'BEGIN{
printf("%d Chemin: %s\n",COMPTEUR_JOURNAL_AWK,REP);
COMPTEUR_JOURNAL_AWK++;}
substr($1,0,1) == "d" {
printf("%d %s %s %s %s %s %s %s %s\n",COMPTEUR_JOURNAL_AWK,$1,$2,$3,$4,$5,$6,$7,$8);
COMPTEUR_JOURNAL_AWK++;}' /usr/project/sources/journal_tmp1 >> /usr/project/sources/journal1
#ON RECUPERE LA DERNIERE VALEUR POUR LE COMPTEUR ET ON ATTRIBUE LA SUIVANTE
#(DANS AWK, ON NE PEUT PAS RETOURNER DE VALEUR)
#ON EN PROFITES POUR CONNAITRE LE NOMBRE DE REPERTOIRES A EXPLORER
COMPTEUR_JOURNAL=`cat /usr/project/sources/journal1 | tail -1 | cut -d" " -f1`;
COMPTEUR_DOSSIER=`expr $COMPTEUR_JOURNAL - $COMPTEUR_DOSSIER`;
echo "compteur journal : $COMPTEUR_JOURNAL";
COMPTEUR_JOURNAL=`expr $COMPTEUR_JOURNAL + 1`;
echo "compteur dossier : il y a $COMPTEUR_DOSSIER rep à explorer";
#A LA SUITE DU FICHIER JOURNAL, ON INSCRIT LES FICHIERS DU REP COURANT + UNE INDICATION DE FIN.
awk -v REP="$1" -v COMPTEUR_JOURNAL_AWK=$COMPTEUR_JOURNAL 'substr($1,0,1) == "-" {
printf("%d %s %s %s %s %s %s %s %s\n",COMPTEUR_JOURNAL_AWK,$1,$2,$3,$4,$5,$6,$7,$8);
COMPTEUR_JOURNAL_AWK++;}
END{
printf("%d FIN D EXPLORATION POUR: %s\n",COMPTEUR_JOURNAL_AWK,REP);
COMPTEUR_JOURNAL_AWK++;
printf("%d\n",COMPTEUR_JOURNAL_AWK);
COMPTEUR_JOURNAL_AWK++;}' /usr/project/sources/journal_tmp1 >> /usr/project/sources/journal1
COMPTEUR_JOURNAL=`cat /usr/project/sources/journal1 | tail -1 | cut -d" " -f1`;
echo "le dernier fichier lu dans $1 à le numéro $COMPTEUR_JOURNAL";
COMPTEUR_JOURNAL=`expr $COMPTEUR_JOURNAL + 1`;
#ON VA RECUPERER LES REPERTOIRES DU REP COURANT POUR LES EXPLORER DE MANIERES RECURSIVES
cat /usr/project/sources/journal1 | cut -d" " -f2- | grep ^d | cut -d" " -f8 | tail -$COMPTEUR_DOSSIER > /usr/project/sources/journal_tmp1;
cat /usr/project/sources/journal_tmp1 | while read ligne;
do
echo -e "fin de navig, valeur de ligne : $1/$ligne";
navig $1/$ligne $COMPTEUR_JOURNAL;
done
}
#Demarrage du programme
clear;
#set -x;
COMPTEUR=0;
COMPTEUR_JOURNAL=1
#Ce compteur servira à se déplacer dans le fichier journal (ligne) pour trouver les éléments qui nous intéressent
until [ $COMPTEUR == 1 ]
do
echo -n "Entrez le répertoire de référence :";
REPERTOIRE="";
read REPERTOIRE;
if [ -d $REPERTOIRE ]
then
cd $REPERTOIRE;
# Ecriture du journal
ls -l $REPERTOIRE > /usr/project/sources/journal_tmp1;
awk -v DATE="`date`" -v REP="`pwd`" -v COMPTEUR_JOURNAL_AWK=$COMPTEUR_JOURNAL 'BEGIN{
printf("%d Journal édité : %s\n",COMPTEUR_JOURNAL_AWK,DATE);
COMPTEUR_JOURNAL_AWK++;
printf("%d Rep de base : %s\n",COMPTEUR_JOURNAL_AWK,REP);
COMPTEUR_JOURNAL_AWK++;
printf("%d\n",COMPTEUR_JOURNAL_AWK);
COMPTEUR_JOURNAL_AWK++;}' /usr/project/sources/journal_tmp1 > /usr/project/sources/journal1
COMPTEUR_JOURNAL=4; #On a écrit trois lignes, on pointe donc sur la quatrième
navig `pwd` $COMPTEUR_JOURNAL;
COMPTEUR=1;
else
echo "$REPERTOIRE n'est pas un répertoire"
fi
done;
set +x; |