Ceci est une ancienne révision du document !
Dossier magique
Sur l'initiative de xelator, quelques scripts ont été créés afin de ranger automatiquement les fichiers selon leur contenu : les .ogg avec les .ogg, les .avi avec les .avi, etc. Ces scripts sont présentés ici, en cas de problème merci de poster sur le sujet précédemment cité.
Première version
Fichiers reconnus
Actuellement, le script reconnaît (en se basant notamment sur leur type MIME) les fichiers de type texte, pdf, dvi, ps/postscript, ogg, la plupart des formats audio,la plupart des formats video, flash, ASF, la plupart des formats image, les archives tar, rar et zip/gzip, les scripts shell, les documents MS-Word, et les fichiers LaTeX. N'hésitez pas à en rajouter (en le signallant sur le forum, merci…).
Le script
Copiez-collez le script suivant dans un fichier, que vous appellerez par exemple dossier_magique, pour faire original :
#!/bin/bash # Définitions des répertoires, à adapter : DIR=/Commun/tri TXT=${DIR}/txt PDF=${DIR}/pdf AUDIO=${DIR}/audio VIDEO=${DIR}/video IMG=${DIR}/images ARCHIVES=${DIR}/archives DOCS=${DIR}/docs TEX=${DIR}/latex MISC=${DIR}/misc # Fichier de log : LOG=/dev/null # Déplacement d'un fichier et mise à jour du fichier log : function bouge() { mv ${1} ${2} heure=`date +%D-%H:%m` echo "[${heure}] ${1} déplacé dans ${2}" >> ${LOG} return 0 } # Créons les répertoires s'ils n'existent pas : function createdirs() { mkdir -p ${TXT} mkdir -p ${PDF} mkdir -p ${AUDIO} mkdir -p ${VIDEO} mkdir -p ${IMG} mkdir -p ${ARCHIVES} mkdir -p ${DOCS} mkdir -p ${TEX} mkdir -p ${MISC} return 0 } # Trions les fichiers : function tri() { cd ${1} ls > /tmp/tri sed -i 's/\ /_/g' /tmp/tri echo "Triage des fichiers du répertoire ${1}..." while read fichier do # Utilisons si possible le type mime : type=`file -bi ${fichier}` case ${type} in *text*) bouge ${fichier} ${TXT};; *pdf* | *dvi* | *postscript*) bouge ${fichier} ${PDF};; *audio* | *ogg*) bouge ${fichier} ${AUDIO};; *video* | *flash*) bouge ${fichier} ${VIDEO};; *image*) bouge ${fichier} ${IMG};; *tar* | *rar* | *zip*) bouge ${fichier} ${ARCHIVES};; *shellscript*) bouge ${fichier} ${TXT};; *msword*) bouge ${fichier} ${DOCS};; esac # Si le type mime ne suffit pas : type=`file -b ${fichier}` case ${type} in *directory*) continue;; *LaTeX*) bouge ${fichier} ${TEX};; *ASF*) bouge ${fichier} ${VIDEO};; # Type inconnu : *) bouge ${fichier} ${MISC};; esac done < /tmp/tri echo "Terminé." cd ${OLDDIR} return 0 } # Si des répertoires sont passés en argument, on les trie, sinon on trie le répertoire par défaut OLDDIR=`pwd` createdirs if [ $# -eq 0 ] then tri ${DIR} else while [ $# -gt 0 ] do tri ${1} shift done fi exit 0
Rendez ce fichier exécutable. - En console :
chmod +x /chemin/vers/le/fichier/dossier_magique
- Sous gnome : clic droit sur le fichier > propriétés > permissions, et cochez la case "Exécution, autoriser l'exécution du fichier comme un programme".
Adaptation
Répertoires
Dans cet exemple, les dossiers sont tous situés dans le répertoire /Commun/tri (toutes les définitions commencent par ${DIR}/, or DIR=/Commun/tri).
Types de fichier
Pour supprimer par exemple les fichiers de type rar, il suffit de modifier la ligne :
*tar* | *rar* | *zip*) bouge ${fichier} ${ARCHIVES};;
en :
*tar* | *zip*) bouge ${fichier} ${ARCHIVES};;
De même, pour rajouter un type de fichier, il suffit d'adapter ou de créer la ligne correspondante. Les types de fichiers sont reconnus grâce à la commande file, donc pour savoir quoi rajouter un petit test s'impose :
file -bi un_fichier.test
Utilisation
En ligne de commande :
dossier_magique répertoire1 répertoire2 ...
Si aucun répertoire n'est spécifié, le répertoire par défaut sera trié.
Si les noms des répertoires contiennent des espaces et autres caractères spéciaux, mettez-les systématiquement entre guillemets et précédez ces caractères d'un slash :
dossier_magique "répertoire\ 1" "répertoire\ 2" ...
Fichier de log
Par défaut, il n'y a pas de fichier de log. Il suffit de modifier la ligne
LOG=/dev/null
par
LOG=chemin_du_fichier_voulu
pour garder une trace de tout mouvement de fichier dû au script.
Exécution automatique
Pour exécuter automatiquement le script toutes les 5 minutes, par exemple, vous pouvez utiliser crontab. On édite la crontab :
crontab -e
Et on rajoute :
*/5 * * * * /chemin/vers/dossier_magique
Seconde version
Xelator ?