[debutant] script synchronisation 2 répertoires et sous répertoires

2002-12-14 Par sujet Christophe PEREZ
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


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



Re: [debutant] script synchronisation 2 répertoires et sous répertoires

2002-12-14 Par sujet jipe
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;