Bonjour,

J'ai ' on a ' fait ce script qui parcours un certains nombre de repertoire et execute certaine option de rsync pour la synchronisation des dossiers
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
 
 
#! /usr/bin/ksh
set -x 
 
DIRS=" awk bcp bin etc conf env hlp isis MTM  purge shell sparse/bin sparse/etc sparse/exe sparse/lib sparse/javalib sparse/conf sqr sql tabl VAR FIXEDINCOME wbi wbi43 "
 
test "CLdi" != $(basename $(pwd)) && echo "Doit etre lance dans un répertoire appelé CLdi : $(viewtop)/CLdi ?" && return 4
TO=/applis/list/summit/CLdi/v52cln032.0
FROM=.
 
RSYNC_OPTS=${RSYNC_OPTS:=-crlv} # av
test "$1" != "doit" && RSYNC_OPTS="${RSYNC_OPTS}ni"
RSYNC_OPTIONS="$RSYNC_OPTS "
 
RSYNC=/Soft/gnutools/bin/rsync 
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/Soft/gnutools/lib
 
for dir in $DIRS; do
    SUBDIR=`dirname $dir`
    test ! -d $TO/$SUBDIR && echo "Creating missing dir  $TO/$SUBDIR" &&  mkdir $TO/$SUBDIR 
    CMD="$RSYNC $RSYNC_OPTS  --exclude '.nfs*' --delete --exclude 'findmerge.log*' --exclude '*.contrib' --exclude '*~' --exclude '*.contrib.*' --exclude '*.keep'  $FROM/$dir $TO/$SUBDIR"
    echo $CMD
    test "$1" != show && eval $CMD
done
 
FROM=../COMMON
CMD="$RSYNC $RSYNC_OPTS  --delete --exclude 'findmerge.log*' --exclude '*.contrib' --exclude '*~' --exclude '*.contrib.*' --exclude '*.keep'  $FROM $TO"
echo $CMD
test "$1" != show && eval $CMD
 
echo
echo "Modify the sets to point toward integration"
CMD="perl -i -pe s/clssund/cmxi/g,s/VDEV/VINT/g,s/DEV/INT/g $TO/COMMON/sets"
echo $CMD
test "$1" != show && eval $CMD
Tout va bien sur le script mais ce qui m'embte c'est cette boucle

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
 
 
for dir in $DIRS; do
    SUBDIR=`dirname $dir`
    test ! -d $TO/$SUBDIR && echo "Creating missing dir  $TO/$SUBDIR" &&  mkdir $TO/$SUBDIR 
    CMD="$RSYNC $RSYNC_OPTS  --exclude '.nfs*' --delete --exclude 'findmerge.log*' --exclude '*.contrib' --exclude '*~' --exclude '*.contrib.*' --exclude '*.keep'  $FROM/$dir $TO/$SUBDIR"
    echo $CMD
    test "$1" != show && eval $CMD
done
Ma demande :Afin d'optimiser le script, comment faire pour remplacer cette boucle par une seule ligne de commande ??

Merci à l'avance