• # Re: Classer ses fichiers

    Posté par . En réponse au journal Classer ses fichiers. Évalué à 1.

    J'ai un script "tout prét", pour ranger les fichiers, si ça t'interesse.
    Mais je pense qu'ill ne doit pas aimer les noms comportant des espaces lui aussi: Il etait prevu pour des fichiers ne comportant pas d'espaces.

    Le but de ce script est d'identifier le type mime de chaque fichier, puis de créer des sous repertoires, pour chaque type et enfin de déplacer les fichiers dans les sous repertoires.
    c'est un peu crado, c'est à revoir, mais il a bien fait son boulot ;-)



    #!/bin/bash

    #**************************************************#
    # #
    # Fait par JS, Le Mercredi 15 Octobre 2003 #
    # aprés avoir perdu 30000 fichiers/2Go #
    # Pour renommer automatiquement ses fichiers #
    # INODE_XXX, récupérés avec recover #
    # #
    # #
    # dedicaced to the file /usr/share/misc/file/magic #
    # #
    #**************************************************#

    # si fichier regulier et si repertoire_type existe, copier vers repertoire_type
    # sinon créer repertoire_type, puis copier

    CWD=`pwd`
    # BUG revoir le system de logs dans /tmp + n° de pid
    LOG_FILE="$CWD/log.txt"
    DEBUG="1"

    [ "$DEBUG" = "1" ] && touch $LOG_FILE
    ## BUG !
    date > $LOG_FILE
    # || echo "je ne peut créer $LOG_FILE"; exit 1

    # IFS=":"

    for i in *; do
    FULLPATH="$CWD/$i"
    [ "$DEBUG" = "1" ] && echo "Trying to identify $i ..."
    file_type=`file -b "$FULLPATH" | cut -d"," -f1 | tr " " "_"`
    [ "$DEBUG" = "1" ] && echo "->file type is : $file_type"
    if [ ! "$file_type" = "" ]; then
    [ "$DEBUG" = "1" ] && echo "OK, file_type ($file_type) n'est pas vide"
    if [ -f "$FULLPATH" ]; then
    [ "$DEBUG" = "1" ] && echo "OK, le fichier ($FULLPATH) est un fichier regulier"
    if [ -d "$CWD/$file_type" ]; then
    [ "$DEBUG" = "1" ] && echo "OK, le repertoire $CWD/$file_type existe déjà"
    [ "$DEBUG" = "1" ] && echo "copie du fichier ($FULLPATH) vers $CWD/$filetype"
    # echo "mv $FULLPATH $CWD/$file_type" || echo "la copie de $FULLPATH vers $CWD/$file_type à echoué" >> $LOG_FILE
    mv "$FULLPATH" $CWD/$file_type || echo "la copie de $FULLPATH vers $CWD/$file_type à echoué" >> $LOG_FILE
    else
    [ "$DEBUG" = "1" ] && echo "! Le repertoire $CWD/$file_type n'existe pas !"
    [ "$DEBUG" = "1" ] && echo "creation du repertoire $CWD/$file_type"
    # echo "mkdir $CWD/$file_type" || echo "la creation du repertoire $CWD/$file_type à echoué" >> $LOG_FILE
    mkdir $CWD/$file_type || echo "la creation du repertoire $CWD/$file_type à echoué" >> $LOG_FILE
    [ "$DEBUG" = "1" ] && echo "copie du fichier ($FULLPATH) vers $CWD/$filetype"
    # echo "mv $FULLPATH $CWD/$file_type" || echo "la copie de $FULLPATH vers $CWD/$file_type à echoué" >> $LOG_FILE
    mv "$FULLPATH" $CWD/$file_type || echo "la copie de $FULLPATH vers $CWD/$file_type à echoué" >> $LOG_FILE

    fi
    else
    [ "$DEBUG" = "1" ] && echo "! le fichier ($FULLPATH) n'est pas un fichier regulier !"
    fi
    else
    [ "$DEBUG" = "1" ] && echo "OK, file_type ($file_type) est vide"
    fi
    done


    # [ "$DEBUG" = "1" ] && echo -n "Il y a eu `wc -l $LOG_FILE` erreurs pendant l'operation"

    IFS=$'\r'; var="$(<$LOG_FILE)";
    [ "$DEBUG" = "1" ] && echo -e "\nIl y a eu ${#var} erreurs pendant l'operation"