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