Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
dossier_magique [Le 23/03/2015, 16:38]
82.232.246.38
dossier_magique [Le 11/09/2022, 11:55] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 3: Ligne 3:
 ---- ----
  
-====== Dossier magique : classement automatique de fichiers ====== ​+====== Dossier magique : classement automatique de fichiers ======
  
-En 2007, sur [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=144237|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. Cela a débouché sur le script "​Dossier magique"​ qui est présenté ici. En cas de problème merci de poster sur le sujet précédemment cité. +En 2007, sur [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=144237|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. Cela a débouché sur le script "​Dossier magique"​ qui est présenté ici. En cas de problème merci de poster sur le sujet précédemment cité. 
-Le code a été remanié en 2015 par erresse, afin d'​ajouter au script une interface graphique permettant de l'​utiliser plus facilement sans en passer obligatoirement par la ligne de commande.+Le code a été remanié en 2015 par erresse, afin d'​ajouter au script une interface graphique permettant de l'​utiliser plus facilement sans en passer obligatoirement par la ligne de commande. Le script gère maintenant la récursivité.
  
 ===== Fichiers reconnus ===== ===== Fichiers reconnus =====
Ligne 20: Ligne 20:
 #!/bin/bash #!/bin/bash
  
-CURRENT_VER=1.0+CURRENT_VER=1.1
  
 # initialisation des options # initialisation des options
Ligne 27: Ligne 27:
 AIDE="​FAUX"​ AIDE="​FAUX"​
 VERSION="​FAUX"​ VERSION="​FAUX"​
 +RECURSIF="​FAUX"​
  
 # Définition des fonctions du script # Définition des fonctions du script
Ligne 74: Ligne 75:
 { {
     cd "​${1}"​     cd "​${1}"​
 + # Faut-il gérer la récursivité pour les sources ?
 + if [[ "​${RECURSIF}"​ = "​VRAI"​ && "​${DIR}"​ != "​${1}"​ ]]
 + then
 + crd=0
 + while [ ${crd} = 0 ]
 + do
 + ls -d */ 2> /dev/null > /tmp/tri
 + crd=$?
 + while read dossier
 + do
 + # On remonte tout le dossier d'un niveau
 + mv -t "​./"​ "​${dossier}"​* 2> /dev/null
 + # Puis on supprime le dossier vide
 + rmdir "​${dossier}"​
 + done < /tmp/tri
 + done
 + fi
     ls > /tmp/tri     ls > /tmp/tri
     while read fichier     while read fichier
Ligne 132: Ligne 150:
  
 # Testons d'​abord si le script est lancé en mode terminal # Testons d'​abord si le script est lancé en mode terminal
-while getopts ":agtv-:" OPT+while getopts ":agrtv-:" OPT
 do do
     # gestion des options longues avec ou sans argument     # gestion des options longues avec ou sans argument
Ligne 138: Ligne 156:
         aide) OPT="​a"​ ;;         aide) OPT="​a"​ ;;
         graphique) OPT="​g"​ ;;         graphique) OPT="​g"​ ;;
 + recursif) OPT="​r";;​
         terminal) OPT="​t"​ ;;         terminal) OPT="​t"​ ;;
         version) OPT="​v"​ ;;         version) OPT="​v"​ ;;
Ligne 144: Ligne 163:
     # puis gestion des options courtes     # puis gestion des options courtes
     case $OPT in     case $OPT in
-        g) TERMINAL="​FAUX"​ ;; 
         a) AIDE="​VRAI"​ ;;         a) AIDE="​VRAI"​ ;;
 +        g) TERMINAL="​FAUX"​ ;;
 + r) RECURSIF="​VRAI";;​
         t) TERMINAL="​VRAI"​ ;;         t) TERMINAL="​VRAI"​ ;;
         v) VERSION="​VRAI"​ ;;         v) VERSION="​VRAI"​ ;;
Ligne 161: Ligne 181:
  echo " ​           $0 -a | --aide Affiche l'​aide."​  echo " ​           $0 -a | --aide Affiche l'​aide."​
  echo " ​           $0 -v | --version Affiche la version."​  echo " ​           $0 -v | --version Affiche la version."​
 + echo " ​           $0 -r | --recursif ​   Gére la récursivité."​
     echo "​Syntaxe 2 : en mode terminal avec paramètre(s) obligatoire(s)."​     echo "​Syntaxe 2 : en mode terminal avec paramètre(s) obligatoire(s)."​
  echo " ​           $0 -t | --terminal CIBLE [SOURCE1 ... SOURCEn]"​  echo " ​           $0 -t | --terminal CIBLE [SOURCE1 ... SOURCEn]"​
Ligne 190: Ligne 211:
 then then
  # On élimine les options pour charger le(s) paramètre(s)  # On élimine les options pour charger le(s) paramètre(s)
- shift+ while [ "​${1:​0:​1}"​ = "​-"​ ] 
 + do 
 + shift 
 + done
  if [ "​${1}"​ = ""​ ]  if [ "​${1}"​ = ""​ ]
  then  then
Ligne 309: Ligne 333:
 </​note>​ </​note>​
  
-Dans cet exemple, les dossiers sont tous situés dans le répertoire /​home/​votre_login (toutes les définitions commencent par **${DIR}/​**,​ or DIR=${HOME}). +Les dossiers par défaut existent sous les versions ​récentes d'​Ubuntu dans $HOME, à l'​exception des dossiers Divers, Exécutables ​et Archives.
- +
-Les dossiers par défaut existent ​sous Ubuntu Gutsy (mais pas sous les versions ​précédentes !), à l'​exception des dossiers Divers et Archives.+
  
 ==== Types de fichier ==== ==== Types de fichier ====
Ligne 326: Ligne 348:
 ===== Utilisation ===== ===== Utilisation =====
  
-En ligne de commande : +**En ligne de commande :** 
-  dossier_magique ​répertoire1 répertoire2 ​...+Le script accepte une option (longue %%--%%option ou courte -o) et un ou plusieurs paramètres. 
 +Les options sont, respectivement : 
 +   ​[--terminal ou -t]     ​-->​ Le script est lancé en ligne de commande 
 +   ​[--graphique ou -g] ou rien     ​-->​ Le script est lancé en mode graphique. Il ne prend pas de paramètre sur la ligne 
 +   ​[--version ou -v]     ​-->​ Affiche la version courante du script. Pas de paramètre 
 +   ​[--aide ou -a]     ​-->​ Affiche un bref rappel d'aide pour l'​utilisation. Pas de paramètre 
 +   ​[--recursif ou -r]    --> Gère la récursivité. Note : Ajouter cette option à la commande de lancement dans les deux modes 
 +Exemple : 
 +   ./dossier_magique ​-t | --terminal CIBLE SOURCE1 SOURCE2 ​..
 +(où CIBLE, SOURCE1 ... SOURCEn sont des répertoires. CIBLE est le dossier "​racine"​ résultant, SOURCE(s) les dossiers à classer. 
 +Si seul le répertoire CIBLE est spécifié, c'est ce répertoire qui sera classé par défaut. Dans ce cas, CIBLE = SOURCE.
  
-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éciauxmettez-les systématiquement entre guillemets et si vous référencez ​le dossier personnel (~/​dossier/​) dans le chemin, ne l'​incluez pas dans les guillemets : 
 +   ​./​dossier_magique -t "​répertoire CIBLE" ~/​dossier/"​répertoire ​SOURCE"​ ...
  
-Si les noms des répertoires contiennent des espaces et autres caractères spéciauxmettez-les systématiquement entre guillemets et précédez ces caractères ​d'un antislash ​: +**En mode graphique :** 
-  dossier_magique ​"répertoire\ 1" "​répertoire\ 2" ...+En mode graphiquene spécifiez ni paramètre ni option (ou -g | %%--%%graphique qui est la valeur par défaut). Le script affiche une petite fenêtre ​d'aide, puis demande au fur et à mesure les dossiers à traiter ​D'​abord la "racine" ​CIBLE, unique, puis le(s) dossier(s) SOURCE(s) à classer. 
 +Si vous voulez classer le dossier CIBLE lui-même, ne choisissez pas d'​autre dossier pour la SOURCE, dans ce cas, CIBLE = SOURCE. 
 +Si vous devez abandonner le script en cours de route (un doute sur le travail à exécuter...),​ cliquez simplement sur "​Annuler"​ pour l'​interrompre sans rien effectuer.
  
 ===== Fichier de log ===== ===== Fichier de log =====
Ligne 344: Ligne 379:
 ===== Exécution automatique ===== ===== Exécution automatique =====
  
 +Il est toujours possible, en lançant une exécution en ligne de commande, de faire fonctionner le script en exécution automatique.
 Pour exécuter automatiquement le script toutes les 5 minutes, par exemple, vous pouvez utiliser [[:​cron|crontab]]. On édite la crontab : Pour exécuter automatiquement le script toutes les 5 minutes, par exemple, vous pouvez utiliser [[:​cron|crontab]]. On édite la crontab :
   crontab -e   crontab -e
  
 Et on rajoute : Et on rajoute :
-<​code>​*/​5 * * * * /​chemin/​vers/​dossier_magique</​code>​+<​code>​*/​5 * * * * /​chemin/​vers/​dossier_magique ​-t CIBLE [SOURCE...]</​code>​ 
 + 
 +===== Bonus ===== 
 + 
 +Vous pouvez créer un lanceur sur le bureau ou dans le menu pour lancer facilement le script en mode graphique. Identifiez-le avec cette icône : 
 +{{:​icons:​dossier_magique.png|}} 
  • dossier_magique.1427125094.txt.gz
  • Dernière modification: Le 23/03/2015, 16:38
  • par 82.232.246.38