Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

Vous n'êtes pas identifié(e).

#26 11-01-2014 11:30:45

Ast
Membre
Distrib. : GNU/Linux Debian Wheezy
Noyau : Linux 3.2.0-4-686-pae
(G)UI : xfce
Inscription : 08-01-2014

Re : script bash déplacement fichier avec récursion

Bonjour,
merci MicP pour les liens, je vais m'attarder dessus dès que possible, j'ai quelques petites choses à faire qui se sont ajoutés à mon week-end sad

Hors ligne

#27 11-01-2014 11:53:32

MicP
Invité

Re : script bash déplacement fichier avec récursion

À consommer ... à petites doses et dans le calme indispensable à la concentration smile

#28 11-01-2014 14:56:47

bendia
Admin stagiaire
Distrib. : Jessie
Noyau : 3.16.0-4-amd64
(G)UI : Gnome + XFCE + Console
Inscription : 20-03-2012
Site Web

Re : script bash déplacement fichier avec récursion

Salut

Pour info, j'avais récupérer ce texte au format pdf je ne sais plus trop où. Comme c'est sous licence GNU Free Documentation License, je me permet de vous le mettre à disposition là je permet donc à MicP de retrouver un lien qui fonctionne dans le message suivant smile

Dernière modification par bendia (11-01-2014 16:03:38)


Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.
file-Re06858991f6f328b4907296ac5cea283

Hors ligne

#29 11-01-2014 15:34:31

MicP
Invité

Re : script bash déplacement fichier avec récursion

Introduction à la programmation en Bash (pdf 580Kio) Eric Sanchis, Maître de Conférences en Informatique (27ème section), Université Toulouse 1 (IUT de Rodez).
@bendia Effectivement, ça provient du même auteur.

EDIT: et c'est d'ailleurs le document pdf de ce que j'ai transmis en html (post#25)
On a les mêmes goûts smile

Dernière modification par MicP (11-01-2014 19:46:02)

#30 11-01-2014 16:07:12

bendia
Admin stagiaire
Distrib. : Jessie
Noyau : 3.16.0-4-amd64
(G)UI : Gnome + XFCE + Console
Inscription : 20-03-2012
Site Web

Re : script bash déplacement fichier avec récursion

Grrrr, c'est y pas malheureux d'être si maladroit mad

Bon, du coup, je supprime mon lien roll

Ben
___________________
La seule question bête, c'est celle qu'on ne pose pas.
file-Re06858991f6f328b4907296ac5cea283

Hors ligne

#31 14-01-2014 20:41:22

Ast
Membre
Distrib. : GNU/Linux Debian Wheezy
Noyau : Linux 3.2.0-4-686-pae
(G)UI : xfce
Inscription : 08-01-2014

Re : script bash déplacement fichier avec récursion

Bonsoir tout le monde,

Désolé je n'ai pas pu toucher à mon script ce week-end, j'ai été malade ...
Je vais m'y remettre ;-)

En ce qui concerne la documentation sur Bash, je l'ai trouvé peu de temps avant de l'avoir grâce à vous tongue
Merci

Je reviens vers vous dans pas longtemps j'espère !

L'Asticot

Hors ligne

#32 24-01-2014 20:34:18

Ast
Membre
Distrib. : GNU/Linux Debian Wheezy
Noyau : Linux 3.2.0-4-686-pae
(G)UI : xfce
Inscription : 08-01-2014

Re : script bash déplacement fichier avec récursion

Bonsoir tout le monde,

J'ai été pas mal occupé et je n'ai pas pu modifier mon script ces deux dernières semaines !
Mais aujourd'hui, j'ai pris du temps et voici ce que j'ai fait :


#!/bin/bash
##### Script permettant de déplacer des fichiers ayant une extension connue, d'un répertoire source à un répertoire de destination #####
#####   Script de l'Asticot, avec l'aide des membres du forum de Debian-Facile.org car je ne suis pas bien doué en programmation ... #####
#####   Version n°0.01 #####
version=0.01
source=$1     ##récupération des deux paramètres si ils sont bien présents
destination=$2
clear

##déclaration de la fonction d'aide
function aide
{
  echo -e " ----------------------------------------------------------------------------------------------------------------------------------------------------------------"
  echo -e "|Bienvenue à toi, j'espère que ce modeste script, qui est en version $version, te permettra de faire ce que tu souhaites !                                           |"
  echo -e "|Ce script te permet de copier des fichiers ayant une extension bien précise d'un répertoire source(pouvant avoir des sous répertoires), à un unique répertoire !|"
  echo -e "|Pour utiliser ce script soit tu mets directement le chemin des répertoires en arguments soit tu les rentres quand je te le demande ;-)                          |"
  echo -e "|Exemple :                                                                                                                                                       |"
  echo -e "|- "./deplacement_fichiers /home/utilisateur/source /home/uilisateur/destination" Si les répertoires source et destination ne sont pas dans le même répertoire     |"
  echo -e "|- "./deplacement_fichiers source destinaton" Si les répertoires source et destination sont dans le même répertoire                                                |"
  echo -e " ----------------------------------------------------------------------------------------------------------------------------------------------------------------"
}

##déclaration de la fonction pour déplacer les fichiers
function deplacement_fichiers
{
      extension="*.odt"
      recherche=$(find ${source} -type f -iname ${extension}) # iname permet de ne pas prendre en compte les majuscules ou les minuscules

      echo -e "Début de la copie des fichiers ayant l'extension \"$extension\" :\n----------------------------------------------------------"
      for i in $recherche
      do
        nomfichier=$(echo $i | awk -F "/" '{print $NF}') #permet d'affecter à la variable nomfichier seulement la dernière partie de la ligne après le séparateur /
        mv $i $destination/$nomfichier
        echo "$nomfichier -----> $destination"
      done


      echo -e "Fin de la copie des fichiers ayant l'extension \"$extension\" !\n--------------------------------------------------------\n"

      extension="*.pdf"
      recherche2=$(find ${source} -type f -iname ${extension})
      echo -e "Début de la copie des fichiers ayant l'extension \"$extension\" :\n----------------------------------------------------------"

      for j in $recherche2
      do
        nomfichier=$(echo $j | awk -F "/" '{print $NF}')
        mv $j $destination/$nomfichier
        echo -e "$nomfichier -----> $destination"
      done

      echo -e "Fin de la copie des fichiers ayant l'extension \"$extension\" !\n--------------------------------------------------------\n"

}

## si le premier paramètre est -h ou --help, j'appel l'aide du script
if [ "$1" == "-h" ]||[ "$1" == "--help" ]
then
  aide
else ##sinon je continue le script

  if [ $# -ne 2 ]     ##si il n'y a pas deux arguments, je demande à l'utilisateur de les entrer
  then
    echo -e "Ah tu as choisis la deuxième solution ! Je vais te laisser entrer tes deux chemins !\n"
    echo -e "C'est partis pour ton premier chemin mon lapin !"
    echo -e "                  -----"
    read source
    echo -e "Et maintenant ton deuxième chemin !"
    echo -e "                  -----"
    read destination
  fi


        ##Je vérifie que les deux paramètres sont des répertoires
  if [ ! -d $source ]||[ ! -d $destination ]
  then
    echo -e "Un de tes deux arguments n'est pas bon !"
    while [ ! -d $source ]    ##tant que ce n'est pas le cas de source je demande de re saisir un répertoire
    do
      echo -e "Ton répertoire source, $source, n'est pas correct, vérifie le s'il te plait !"
      read source
    done

    while [ ! -d $destination ]   ##tant que ce n'est pas le cas de destination je demande de re saisir un répertoire
    do
      echo -e "Ton répertoire destination, $destination, n'est pas correct, vérifie le s'il te plait !"
                  read destination
    done
  fi

### Je vérifie que je peux lire le contenu du répertoire source et que j'ai les droits d'écriture sur le répertoire destination
  if [ -r $source ]
  then
    if [ -w $destination ]
    then
      deplacement_fichiers   ##si je peux lire dans le répertoire source et si je peux écrire dans le répertoire destination, je fais appel à la fonction pour déplacer les fichiers
    else
      echo -e "Je suis désolé, mais je ne peux pas écrire dans ton répertoire de destination !\nPeux-tu vérifier les droits du répertoire s'il te plait ?\nUn petit coup de \"ls -l |grep $destination\" et c'est bon !"
      echo -e "                  -----"
    fi
  else
    echo -e "Je suis désolé, mais je ne peux pas lire ce qu'il y a dans ton répertoire source !\nPeux-tu vérifier les droites du répetoire s'il te plait ?\nUn petit coup de \"ls -l |grep $source\" et c'est bon !" "
    echo -e "
                 -----"
  fi
fi



J'espère que je suis clair dans les commentaires que j'ai mis et que ce n'est pas trop le chaos dans mon code !
J'attend vos remarques avec impatience !
Je pense demander à l'utilisateur les extensions de fichiers qu'il souhaite déplacer pour que ce soit un peu plus "dynamique" comme script !

L'Asticot

Hors ligne

#33 26-01-2014 21:58:54

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : script bash déplacement fichier avec récursion

Salut,

Je n'ai pas encore relu le script. Si j'ai un conseil à te donner pour la prochaine fois : garde ton script concis et épuré, et évite les fioritures au maximum, cela gène à la lisibilité.

captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#34 27-01-2014 10:19:11

Ast
Membre
Distrib. : GNU/Linux Debian Wheezy
Noyau : Linux 3.2.0-4-686-pae
(G)UI : xfce
Inscription : 08-01-2014

Re : script bash déplacement fichier avec récursion

Bonjour captnfab,

Ce que tu appels fioritures c'est les tirets que j'ai voulu mettre pour séparer le texte du script des réponses de l'utilisateur ? Ou l'encadrement de l'aide que j'ai essayé de créer ?
Si c'est ça, c'est vrai que ça fait un peu trop et que ce n'est peut-être pas trop adapté à tout les affichages (en fonction de la taille du terminal).

L'Asticot

Hors ligne

#35 27-01-2014 12:11:22

captnfab
Admin-Girafe
Lieu : /dev/random
Distrib. : Debian Stretch/Sid/Rc-Buggy
Noyau : Linux (≥ 4.3)
(G)UI : i3-wm (≥ 4.11)
Inscription : 07-07-2008
Site Web

Re : script bash déplacement fichier avec récursion

Plop,

Voici ce que j'entendais par une version concise (pour l'en-tête) :

#!/bin/bash
# Script permettant de déplacer des fichiers ayant une extension connue, d'un répertoire source à un répertoire de destination
 
version=0.01
# Récupération des deux paramètres si ils sont bien présents
source=$1
destination=$2
 
##déclaration de la fonction d'aide
function aide
{
  echo "usage: "
  echo "deplacement_fichiers source destinaton"
}



J'essaye de te faire des commentaires sur le code bientôt smile


captnfab,
Association Debian-Facile, bépo.
TheDoctor: Your wish is my command… But be careful what you wish for.

Hors ligne

#36 31-01-2014 13:37:16

Ast
Membre
Distrib. : GNU/Linux Debian Wheezy
Noyau : Linux 3.2.0-4-686-pae
(G)UI : xfce
Inscription : 08-01-2014

Re : script bash déplacement fichier avec récursion

Bonjour,

Je suis toujours en pleine modification du script :-)
Je te remercie pour tes remarques :-)

L'Asticot

Hors ligne

Pied de page des forums