Journal Classer ses fichiers

Posté par  .
Étiquettes : aucune
0
31
jan.
2004
Voilà, j'aimerai faire un script pour classer certain de mes fichiers, afec une boucle type :
for i in *
mv $i .... etc etc

Le truc c'est que quand un fichier est composé d'espace, tel que "Mon fichier", bah mon i prend les valeurs de Mon puis ensuite de Fichier.

Donc comment jpourrai faire pour qu'il prenne le nom complet de fichier ?

Si quelqu'un a un exemple de script tout fait pour classer des fichiers, j'aimerai bien m'en inspirer :-)


Merci.
  • # Re: Classer ses fichiers

    Posté par  . Évalué à 4.

    Mets $i entre guillements: "$i"
  • # Commentaire supprimé

    Posté par  . Évalué à -1.

    Ce commentaire a été supprimé par l’équipe de modération.

  • # Re: Classer ses fichiers

    Posté par  (site web personnel) . Évalué à 1.

    J'ai eu le même problème.
    Il y a une astuce qui en parle :
    http://linuxfr.org/tips/35.html(...)

    Pour résumer, en utilisant find et while, ça fonctionne :
    find * -type f -maxdepth 0|while read fichier;
    do
    echo $fichier
    done
    • [^] # Re: Classer ses fichiers

      Posté par  . Évalué à 0.

      plus court :

      find * -type f -maxdepth 0 -exec echo {} \;

      {}: corresponds au nom du fichier courant

      NB: ne pas oublier l'antislash
  • # Re: Classer ses fichiers

    Posté par  . Évalué à 2.

    tsi le tri a effectuer n'est pas trop compliquer, tu peut ausi utiliser rename...
    • [^] # Re: Classer ses fichiers

      Posté par  . Évalué à 3.

      si c'est pour ce faire moinser, je crois que ça sert a rien de repondre au journaux

      Matthieu qui trouve que dlfp c'etait mieux avant....
  • # Re: Classer ses fichiers

    Posté par  . Évalué à 1.

    Oki merci beaucoup pour votre aide !
    Je vais jeter un oeil a tout ca une fois rentré chez moi.

    ++
  • # Re: Classer ses fichiers

    Posté par  . É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"
  • # Re: Classer ses fichiers

    Posté par  (site web personnel) . Évalué à 1.

    for i in $(ls); do mv $i ./plop/$i;done
    Evidemment, il faut que le repertoire ./plop existe...

    P!

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.