• # Trop de fork

    Posté par . En réponse au message Script Bash, tronquer noms de fichiers pour eCryptFS. Évalué à 4.

    J'ai pas regardé dans le détail ce que fait ton algo, mais à vu de nez tu lance un paquet de fois find et md5sum. C'est dommage. Je pense qu'au lieu de rendre trunc_directory récursive tu devrait utiliser find une bonne fois pour toute et piper son résultat.

    Tu ne calcul pas le md5 sur le fichier mais sur son nom, ce qui n'est pas très pratique avec la commande md5sum, mais tu devrait pouvoir le faire en perl1 :

    perl -MDigest::MD5 -lnE 'print md5_hex($_).\' \'.$_'

    Qui va prendre les noms de fichiers en entrée et sortir le hash et le nom de fichier (pas testé). Tu peut ajouter des rafinements coté perl pour ne prendre que le nom du fichier (sans le chemin ni l'extension) et tronquer le hash comme tu le souhaite.

    Ainsi finalement tu pourra faire un script de la forme :

    find "${dir}" | perl -MDigest::MD5 -lnE 'print md5_hex($_).\' \'.$_' | ./mon_script.sh

    Et ça devrait, AMHA, aller beaucoup mieux coté perf (find n'est lancé qu'une fois, perl aussi).


    1. je parle de perl parce que c'est classique d'utiliser perl pour ça, mais tu peux le faire avec ce qui te plaît.

    Tous les contenus que j'écris ici sont sous licence CC0 (j'abandonne autant que possible mes droits d'auteur sur mes écrits)