Selon El Manu <[EMAIL PROTECTED]>:

> Salut les masters !
>
> J'ai un petit script à faire et je galère un peu...
> Voici l'énoncé du problème :
> -2 répertoires avec la structure suivante :
> ./notes/$TYPE/prd/$NOM
> ./recipe/$TYPE/prd/$NOM  ($TYPE et $NOM étant variables)
> qui contiennent chacun un nombre de fichier correspondant au nombre de
> version de la recipe ou de la note en question, avec des noms
> incrémentés, c'est à dire : 1,2,3 s'il y a 3 versions.
>
> Théoriquement, le nombre de version de "recipe" est égal à celui de
> "notes".
> Mon script doit :
> -détecter les différences
> -les corriger en copiant la dernière version jusqu'à ce que la
> différence disparaisse.
>
> Je sais, c'est très mal expliqué, je vais donc donner un exemple
> concret :
>
> un "ls" du repertoire recipe, me donne ça (extrait):
> ALLOY_TS/prd/400-ALLO:
> 1
> 2
>
> ALLOY_TS/prd/410-ALLO:
> 1
> 2
>
> ALLOY_TS/prd/415-ALLO:
> 1
> 2
>
> et un "ls" du répertoire note, ça :
> ALLOY_TS/prd/400-ALLO:
> 1
> 2
>
> ALLOY_TS/prd/410-ALLO:
> 1
>
> ALLOY_TS/prd/415-ALLO:
> 1
> 2
>
> Je constate qu'il me manque la version 2 de la note 410-ALLO.
> Je corrige donc en faisant :
> cp ALLOY_TS/prd/410-ALLO/1 ALLOY_TS/prd/410-ALLO/2
>
> Voilà en gros ce que mon script doit faire tout seul comme un grand...
>
> Toutes les idées sont les bienvenues !!
>
> El Manu
>

Je ferais un truc de ce genre (non testé) :

NOMBRE_NOTES=`ls ./notes/${TYPE}/prd/${NOM} | wc -l  `
NOMBRE_RECIPES==`ls ./recipe/${TYPE}/prd/${NOM} | wc -l  `
DERNIERE_NOTE=`ls  ./notes/${TYPE}/prd/${NOM} | tail -1`
DERNIERE_RECIPE=`ls  ./recipes/${TYPE}/prd/${NOM} | tail -1`

if [ ${NOMBRE_NOTES} -lt ${NOMBRE_RECIPES} ]; then
   cp ${DERNIERE_RECIPE} ./notes/${TYPE}/prd/${NOM}
fi


if [ ${NOMBRE_RECIPES} -lt ${NOMBRE_NOTES} ]; then
   cp ${DERNIERE_NOTE} ./notes/${TYPE}/prd/${NOM}
fi


Et puis tu boucles dans tous tes répertoires ./notes/${TYPE}/prd/${NOM} avec
ça...


Attention cependant, si il peut manquer 2 versions et non pas une seule, ça ne
va pas marcher. Dans ce cas il faudrait faire un truc du genre :

for i in ./notes/${TYPE}/prd/${NOM}/* do
   VERSION=basename $i
   if [ ! -f ./recipe/${TYPE}/prd/${NOM}/${VERSION} ]
   cp $i ./recipe/${TYPE}/prd/${NOM}/
fi


Mais bon, à tester sérieusement...


--
H.Lefebvre  [EMAIL PROTECTED]
LINUX : Ne jetez plus votre argent par les fenêtres !
____________________________________________________
Want to buy your Pack or Services from Mandriva? 
Go to http://store.mandriva.com
Join the Club : http://www.mandrivaclub.com
____________________________________________________

Répondre à