Nous sommes le Jeu 26 Juin, 2025 15:03
Supprimer les cookies

Tri Rangement de fichiers

Pour une tâche précise, pour remplacer un logiciel propriétaire donné...

Sam 16 Oct, 2004 08:31

Je cherche un soft qui me permettrait de ranger automatiquement des fichiers dans des répertoires en fonction de leur nom.
Par exemple j'ai de grandes listes de fichiers :
ABC001
ABC002
..
ABC999
AZE001
AZE002
...
AZE999
...
Ce logiciel devrait ( en lui fournissant par exemple 3 en paramètre) de créer les sous répertoires ABC et AZE et de déplacer les fichiers dans les sous répertoires correrspondants....

Merci

PS Merci à votre site
godel

Messages : 22

Sam 16 Oct, 2004 17:28

Bonjour,

si vous êtes sous Wind**s, je ne peux rien pour vous. Par contre, si vous travaillez sous GNU/Linux, je vous ai fait un petit script qui devrait faire l'affaire.
J'ai repris vôtre exemple pour les noms de fichiers. Voici le script:
Code: Tout sélectionner
#!/bin/bash

###############################################################
# Script permettant de déplacer des fichiers avec création de
# répertoire associé
#
# Version : 0.1
###############################################################

DIR=$1
NB_CARACT=$2

if (test -d $DIR)
        then cd "$DIR";
        for file in `ls`
        do
                rep=`basename "$file" | cut -b -"$NB_CARACT"`
                if (test -d $file)
                        then continue
                fi
                if !(test -d $rep)
                        then mkdir $DIR$rep
                fi
                if (test  -f $file)
                        then mv $file $rep
                fi
        done
else
        echo "Le répertoire $1 ne semble pas exister !";
        exit 1
fi


et voici ce que cela donne dans un shell:
Code: Tout sélectionner
[christian@Auvergne2 christian]$ ls -R devel/
devel/:
ABC001  ABC003  ACE001  ACE003  AZF001  AZF003
ABC002  ABC004  ACE002  ACE004  AZF002  AZF004
[christian@Auvergne2 christian]$
[christian@Auvergne2 christian]$
[christian@Auvergne2 christian]$ ./Repartir /home/christian/devel/ 3
[christian@Auvergne2 christian]$
[christian@Auvergne2 christian]$
[christian@Auvergne2 christian]$ ls -R devel/
devel/:
ABC/  ACE/  AZF/

devel/ABC:
ABC001  ABC002  ABC003  ABC004

devel/ACE:
ACE001  ACE002  ACE003  ACE004

devel/AZF:
AZF001  AZF002  AZF003  AZF004
[christian@Auvergne2 christian]$


Faites un copié/collé du script dans vôtre éditeur favori et enregistrez-le dans votre dossier utilisateur sous le nom "Repartir" par exemple.
Ensuite faire "chmod +x Repartir"
Sous root, faire "mv Repartir /usr/local/bin"

Maintenant, il ne reste plus qu'a invoquer le script avec comme paramètres le chemin complet du répertoire + le nombre de caractères à extraire comme racine. (voir le sortie du shell donné en exemple)

Voilà, espérant que cela vous aide un tantinet. Si vous avez des questions (ou des modifs à faire), n'hésitez pas.....

A+
Christian.
christian79

Messages : 44

Sam 16 Oct, 2004 18:54

Merci pour votre travail....
cela m'a l'air très euh pointu, mais....
je suis sous.... Win truc....
Je me mets doucement au libre (open office et mozilla...) mais linux j'ai joué avec sans vraiment faire de migration sur mon ordi principal.
Merci encore pour votre travail.
Patrice
godel

Messages : 22

Sam 16 Oct, 2004 20:49

Bonsoir,
godel a écrit:je suis sous.... Win truc....
Patrice

D'ou l'importance de le préciser dès le départ dans le premier post. Un post à lire avant de poser des questions :

[A LIRE AVANT TOUT] Méthode à suivre pour poster

Amicalement,
Pseudogaëtan.
Pseudogaetan

Messages : 2586
Géo : Rennes (France,35)

Lun 21 Fév, 2005 16:06

godel a écrit:je suis sous.... Win truc....


Perso j'ai abandonné le batch et autres scripts shell pour des scripts PHP. L'avantage c'est de pouvoir exécuter son script sur n'importe quelles plate-formes. Et on peut vraiment tout faire et ce langage est accessible à n'importe quels mortels : documentation en ligne, communauté, articles... Juste pour ceux que ça intéresse :).
goa103

Messages : 132
Géo : Lyon

Qui est en ligne ?

Utilisateur(s) parcourant actuellement ce forum : Aucun utilisateur inscrit