• [^] # Re: C'est pas pratique...

    Posté par . En réponse à la dépêche Ultracopier, la copie enfin facile. Évalué à 2.


    cat MaListeDeFichiers | while read f; do cp -a $f ../autre/ ; done


    Le problème avec ce genre de ligne est toujours le même, et c'est visiblement partout pareil:
    pourquoi ne vérifiez-vous pas le code retour de cp ?

    Il est si simple de générer une liste en sortie avec les fichier effectivement copiés par cp (cp retourne 0) et à la fin du script de comparer cette liste avec diff à la liste passée en entrée pour signaler les fichiers qui n'ont pu être copiés...

    Truc du genre :


    #!/bin/bash

    BIN=${0##*/}
    FILE=${1?usage: $BIN listedefichiers.txt destdir}
    DIR=${2?usage: $BIN listedefichiers destdir}


    rm -f $FILE.out
    mkdir -p $DIR
    if (( $? ))
    then
    echo "Repertoire impossible a creer: $DIR"
    exit 1
    fi

    while read f
    do
    cp -a $f $DIR
    if (( $? ))
    then
    break
    else
    echo $f >> $FILE.out
    fi

    done < $FILE

    diff -q $FILE $FILE.out
    if (( $? ))
    then
    comm -3 $FILE $FILE.out > $FILE.re
    echo -e "Impossible de copier les fichiers:\n$(<$FILE.re)"

    # Boucle infinie pour reessayer :)
    # 0ドル $FILE.re $DIR
    fi



    PS: mes excuses pour les éventuels problèmes d'affichage ( &gt; etc)