J'ai moi-même trouvé la solution à mon problème. Mon mot de passe Hotmail était trop long (20 caractères). Ce n'était pas gênant pour ouvrir ma boîte Hotmail, par contre le mot de passe était refusé lors de la récupération à partir de Gmail.
Je l'ai changé pour un de 16 caractères et tout est rentré dans l'ordre.
Ayé! Enfin!
Je vous remercie tous pour vos contributions. En particulier la tienne, netsurfeur.
Je suis épaté par la rapidité de vos réactions et la qualité de vos réponses. Si si!
Donc j'ai terminé mon script et je le poste ici, sait-on jamais, ça pourrait servir à d'autres.
Je rappelle à quoi il sert :
Les employés d'une entreprise d'audit créés, chaque fois qu'une entreprise est auditée,
un fichier contenant leur rapport sous /home/[le rep de l'auditeur]
(ex : Jacques dépose ses rapports dans /home/Jacques).
Le rapport est de la forme [nom de l'entreprise].extension (ex : Renault.doc).
Le programme déplace les rapports des auditeurs et les place sous /Rapports/[nom de l'entreprise]
(ex : le rapport renault.doc de Jacques sera placé sous /Rapports/Renault).
Eventuellement, si l'entreprise est auditée pour la première fois
(et qu'il n'y a donc pas encore de répertoire à son nom sous /Rapports),
le programme créé un répertoire au nom de l'entreprise.
Le premier rapport déposé prendra alors le nom, par exemple, Sony.001.doc.
Si l'entreprise a été auditée plusieurs fois, le programme renomme le rapports en le déplaçant.
Ainsi, le 2nd rapport sur Renault s'appellera Renault.002.doc, le 3ième, Renault.003.doc, etc...
N'hésitez pas à me demandez des précisions si je n'ai pas été assez clair.
________________________________________________________________________________
#! /bin/bash
# Le programme suivant prend en compte un nombre illimité d'auditeurs et jusqu'à 999 rapports.
# Les rapports sont traités quelque soit leur extension.
# Le nom des rapports peut contenir n'importe quel signe y compris des espaces.
# Le nom des rapports classés est de la forme 'société.001.ext'.
# Le fait d'ajouter un point entre le nom de la société et le numéro permet de prendre
# en compte la présence éventuelle de chiffres dans le nom de la société.
# Variables :
# a = répertoires des auditeurs sous /home
# b = rapports non classés
# c = nom de la société auditée
# d = numéro du dernier rapport classé
# e = extension du rapport
cd "/home/Linux/Profils/"
for a in * ; do
# traiter uniquement les répertoires
if [ -d "$a" ] ; then
cd "/home/Linux/Profils/$a"
for b in * ; do
# traiter uniquement les fichiers
if [ -f "$b" ] ; then
# on extrait du nom du rapport le nom de la société
# c'est à dire tout ce qui est avant le dernier point
c=${b%*.*}
# on récupère l'extension du rapport à classer
# c'est à dire tout ce qui est après le dernier point
e=.${b##*.}
# un répertoire au nom de la société existe-t-il déjà?
cd "/home/Linux/Rapports"
if [ -d "$c" ] ; then
cd "$c"
# on extrait de la liste le dernier fichier ajouté
# (celui dont le nombre est le plus grand)
d=$(ls -1 | tail -1)
# on retire au fichier son extension
d=${d%*.*}
# on extrait son numéro
d=${d##*.}
# on supprime les zéros non significatifs
d=$(echo $d | sed 's/^0*//')
# on incrémente ce numéro de 1
d=$(($d + 1))
# on lui accolle 2 '0'
d=00$d
# on extrait les 3 premiers chiffres (à partir de la droite)
# \([0-9][0-9][0-9]\) et \1 : motif conservant les 3 chiffres de droite
d=$(echo $d | sed 's/^0*\([0-9][0-9][0-9]\)/\1/g')
# on déplace enfin le rapport du répertoire de l'auditeur
# dans le répertoire de la société en le renommant
mv "/home/Linux/Profils/$a/$b" "/home/Linux/Rapports/$c/$c"."$d$e"
else
# on crée un répertoire au nom de la société
mkdir "/home/Linux/Rapports/$c"
# on y déplace alors le rapport en lui attribuant le numéro '001'
mv "/home/Linux/Profils/$a/$b" "/home/Linux/Rapports/$c/$c".001"$e"
fi
fi
# le prog se trouvait alors dans /home/Linux/Rapports,
# il faut qu'il revienne dans le répertoire de l'auditeur
# pour traiter les rapports restant
cd "/home/Linux/Profils/$a"
done
fi
# le prog se trouvait alors dans le répertoire d'un auditeur,
# il faut qu'il revienne sous /home pour traiter les répertoires
# des autres auditeurs
cd "/home/Linux/Profils/"
done
En fait, dans mon script précédent, j'avais fait ceci :
cd /home
for a in * ; do
# ignorer tous les objets qui ne sont pas des répertoires
if [ ! -d "$a" ] ; then
continue
fi
if [ "$a" = \* ] ; then
break
fi
cd "/home/$a"
for b in * ; do
# ignorer tous les objets qui ne sont pas des fichiers
if [ ! -e "$b" ] ; then
continue
fi
if [ "$b" = \* ] ; then
continue
fi
mais les tests sur les fichiers et les repertoires faisaient que le programme ne fonctionnaient pas bien. Je les ai donc supprimés.
Sinon, ta solution est peut-être juste, mais je ne la comprends pas bien. Et en quoi est-elle différente de la mienne?
[^] # Re: Problème résolu
Posté par RobertRyan . En réponse au message La récupération de mes emails Hotmail dans Gmail ne fonctionne plus. Évalué à 0.
Postez quelque chose en rapport s'il vous plaît.
# Problème résolu
Posté par RobertRyan . En réponse au message La récupération de mes emails Hotmail dans Gmail ne fonctionne plus. Évalué à 0.
Je l'ai changé pour un de 16 caractères et tout est rentré dans l'ordre.
[^] # Re: 2 technos propriétaires qui se font la guerre
Posté par RobertRyan . En réponse au message La récupération de mes emails Hotmail dans Gmail ne fonctionne plus. Évalué à 2.
# Problème résolu!
Posté par RobertRyan . En réponse au message Annonce : besoin de cours en C++ sur Marseille. Évalué à 1.
[^] # Re: hum
Posté par RobertRyan . En réponse au message Annonce : besoin de cours en C++ sur Marseille. Évalué à 1.
[^] # Script achevé
Posté par RobertRyan . En réponse au message utilisation de S_ISDIR et S_ISREG. Évalué à 1.
[^] # Re: Ben, man bash ...
Posté par RobertRyan . En réponse au message utilisation de S_ISDIR et S_ISREG. Évalué à 2.
En fait, dans mon script précédent, j'avais fait ceci :
cd /home
for a in * ; do
# ignorer tous les objets qui ne sont pas des répertoires
if [ ! -d "$a" ] ; then
continue
fi
if [ "$a" = \* ] ; then
break
fi
cd "/home/$a"
for b in * ; do
# ignorer tous les objets qui ne sont pas des fichiers
if [ ! -e "$b" ] ; then
continue
fi
if [ "$b" = \* ] ; then
continue
fi
mais les tests sur les fichiers et les repertoires faisaient que le programme ne fonctionnaient pas bien. Je les ai donc supprimés.
Sinon, ta solution est peut-être juste, mais je ne la comprends pas bien. Et en quoi est-elle différente de la mienne?
[^] # Re: Le dernier fichier....
Posté par RobertRyan . En réponse au message Tri de fichiers et expressions rationnelles. Évalué à 1.
Déjà la moitié de mon problème résolu. ça avance!