Contenu | Rechercher | Menus

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, 18:15]
82.232.246.38
dossier_magique [Le 22/06/2017, 13:16] (Version actuelle)
moko138 [Utilisation] Échappé deux "--"
Ligne 6: Ligne 6:
  
 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 [[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é.
-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 325: Ligne 349:
  
 **En ligne de commande :** **En ligne de commande :**
-Le script accepte une option (longue --option ou courte -o) et un ou plusieurs paramètres.+Le script accepte une option (longue ​%%--%%option ou courte -o) et un ou plusieurs paramètres.
 Les options sont, respectivement : Les options sont, respectivement :
    ​[--terminal ou -t]     ​-->​ Le script est lancé en ligne de commande    ​[--terminal ou -t]     ​-->​ Le script est lancé en ligne de commande
Ligne 331: Ligne 355:
    ​[--version ou -v]     ​-->​ Affiche la version courante du script. Pas de paramètre    ​[--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    ​[--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 : Exemple :
    ​./​dossier_magique -t | --terminal CIBLE SOURCE1 SOURCE2 ...    ​./​dossier_magique -t | --terminal CIBLE SOURCE1 SOURCE2 ...
Ligne 340: Ligne 365:
  
 **En mode graphique :** **En mode graphique :**
-En mode graphique, ne 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.+En mode graphique, ne 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 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. 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.
Ligne 360: Ligne 385:
 Et on rajoute : Et on rajoute :
 <​code>​*/​5 * * * * /​chemin/​vers/​dossier_magique -t CIBLE [SOURCE...]</​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|}}
 +


Le contenu de ce wiki est sous licence : CC BY-SA v3.0