• [^] # Re: Python

    Posté par . En réponse au journal Défragmenter une partition FAT32 sous Linux .... Évalué à 8.

    Au passage, ta regexp est incorrecte, c'est extent quand il y en a 1 et extents quand il y en a plusieurs :)

    J'ai pas de fichiers fragmentés pour essayer.

    Le but était de partager avec tout le monde, donc j'ai pris python pour aider à la relecture.

    Je trouve justement que ça rend la relecture bien plus compliquée. C'est la version que j'aurais fais moi et c'est la raison qui fait que je ne partage pas ça. C'est juste un trucs que je fais dans ma shell. Pour te montrer une version shell simple et partageable.

    #!/bin/bash
    FRAGMENT_LIMIT=5
    defragment() {
     cp -- "1ドル" "1ドル.tmp" && mv -- "1ドル.tmp" "1ドル"
    }
    nb_fragment() {
     filefrag -- "1ドル" | cut -d' ' -f2
    }
    for music in ( $(find "1ドル" -type f) ) do
     fragment=$(nb_fragment "$music")
     if [[ ${FRAGMENT_LIMIT} -lt $fragment ]] then
     defragment "$music"
     fi
    done

    Ça décrit bien ce que l'on veut faire :

    • comment on défragmente un fichier
    • comment on sait combien de fragments composent un fichier
    • on cherche tous les fichiers et s'ils ont plus de FRAGMENT_LIMIT fragments on les défragmente

    On peut ajouter quelques infos mais la base est très lisible sans avoir à gérer de fonction récursive, de sous process (bien sûr c'est juste que c'est transparent), ni même d'expression régulière. Il y a une subtilité dans ma version, l'utilisation du -- pour ne pas avoir de problème dans les cas où tu as un fichier qui commence par "-".