On Sat, 14 Dec 2002 13:21:13 -0400
Christophe PEREZ <[EMAIL PROTECTED]> wrote:

> Bonjour,
> 
> Je suis persuad� que l'un de vous a d�j� planch� sur le probl�me (Jipe?
> :-) ).
> 
> Je voudrais synchoniser 2 r�pertoires, en r�cup�rant dans le second, les
> fichiers plus r�cents du premier.
> A savoir que tous les fichiers n'existent pas dans chacun des
> r�pertoires, et surtout, que dans l'un d'entre eux les noms sont en
> majuscule et dans l'autre en minuscules.
> Il faut aussi que la recherche soit r�cursive dans les sous-r�pertoires.
> 
> J'ai commenc� � essayer de le faire, avec un for fichier in `ls $1`; do
> puis fichier=$(echo $fichier| tr '[:lower:]' '[:upper:]')
> Mais en fait, ce n'est pas r�cursif, et j'ai un pb avec les fichiers qui
> n'existent que d'un c�t�, et enfin, je n'ai pas beaucoup de temps � y
> consacrer et c'est relativement urgent (professionnel).
> 
> Alors, si quelqu'un a d�j� �a tout pr�t, �a me rendra un fier service.
> 
> Merci d'avance.
> -- 
> Christophe PEREZ
> 
> 

salut christophe,

je t'envoie un petit script de test dont tu pourras t'inspirer s'il te conviens. comme 
je ne sais pas exactement ce que tu veux, je ne peux pas te faire du "sur mesure" ;)

#!/bin/bash

#juste au cas o� tu ais des noms de fichier avec espace
IFS=$(echo -e "\n\r\t")
#definition du r�pertoire de synchronisation
SYNCDIR=/home/jipe/tmptest/
#recherche de tous les fichiers r�guliers dans le r�pertoire courrant et
#sous r�pertoires
#si tu veux un autre type de recherche modifie -type f
for name in $(find . -type f)
        do
                #le nom du fichier dans $SYNCDIR
                #l� je suppose que les fichiers sont tous dans le m�me
                #r�pertoire
                #si tu as recr�� la m�me arborescence modifie
                #${name##*/} en ${name#*/}
                #${name##*/} est �quivalent � basename
                #${name#*/} ne supprime que le ./ que find ajoute en
                #t�te de fichier
                #les minuscules sont chang�es en majuscules
                NAME=$SYNCDIR$(echo ${name##*/} | tr a-z A-Z)
                IFS=" "
                #$array est une variable tableau dont les champs 5 6 et
                #et 7 vont permettre de d�finir la date du fichier
                #echo affiche la date et le nom du fichier
                array=($(ls -l "$name"))
                date=$(echo "${array[5]} ${array[6]} ${array[7]}")
                echo "$date $name"
                #je teste maintenant si $NAME existe cad $name modifi�
                #en majuscules dans $SYNCDIR
                if [ -f "$NAME" ]
                        then    
                                #il existe -> recherche de la date
                                #pr�c�demment puis echo         
                                ARRAY=($(ls -l "$NAME"))
                                DATE=$(echo "${ARRAY[5]} ${ARRAY[6]} ${ARRAY[7]}")
                                echo "$DATE $NAME"
                                #puis recherche si $date et $DATE sont
                                #identiques 
                                if [ "$DATE" = "$date" ]
                                        then
                                                echo "$name et $NAME ont les m�mes 
dates"
                                        else
                                                echo "$name et $NAME ont des dates 
diff�rentes"
                                fi
                        else
                                echo "$NAME n'existe pas"
                fi
                echo
        done

vala. tel qu'il est ce script, lorsque find trouve ./toto, cherche si $SYNCDIR/TOTO 
existe et s'il existe te dit si ./toto et $SYNCDIR/TOTO ont la m�me date.
maintenant � toi de jouer ;)

bye
jipe

Vous souhaitez acquerir votre Pack ou des Services MandrakeSoft?
Rendez-vous sur "http://www.mandrakestore.com";

Répondre à