Ca c'est pas malin:
# 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
Aurait tu oublie la premiere maxime de la programmation utile:
"utiliser des noms de variables significatifs"
Autre chose:
tu a du cd "/home/Linux/Profils/" partout dans ton script, typiquement
une variable aurait ete tres utile au cas ou un changement du repertoire
de base arriverait.
Derniere chose:
Les shells utilisents des alias pour permettrent aux utilisateurs
de ne pas s'encombrer a retapper tout le temps les memes arguments
mais dans un script il est bon de passer outres ceux ci pour eviter un
maximum de comportement incoherents.
De plus tout les unix non pas forcement les memes emplacements
pour les commandes il est donc conseiller de creer des variables
pour toutes les commandes utilisées.
Ah et puis les cd dans un script c'est pas tres propre.
for auditeur in $profils/* ; do
# traiter uniquement les répertoires
if [ -d "$auditeur" ] ; then
for doc in $auditeur/* ; do
# traiter uniquement les fichiers
if [ -f "$doc" ] ; then
base=`$BASENAME $doc`
# on extrait du nom du rapport le nom de la société
# c'est à dire tout ce qui est avant le dernier point
societe=${base%*.*}
# on récupère l'extension du rapport à classer
# c'est à dire tout ce qui est après le dernier point
ext=.${base##*.}
# un répertoire au nom de la société existe-t-il déjà?
if [ -d "$rapports/$societe" ] ; then
# on extrait de la liste le numero du dernier fichier ajouté
# (celui dont le nombre est le plus grand)
d=$($LS -1 "$rapports/$societe" | $TAIL -1 | sed 's/*\.\([0-9]+\)\.*/1円/g')
# on incrémente ce numéro de 1
# on lui accolle 2 '0'
d=00$(($d + 1))
# on extrait les 3 premiers chiffres (à partir de la droite)
d=$(echo $d | sed 's/^0*\([0-9]\{3\}\)/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 "$doc" $rapports/$societe/$societe.$d$ext"
else
# on crée un répertoire au nom de la société
$MKDIR "$rapports/$societe"
# on y déplace alors le rapport en lui attribuant le numéro '001'
$MV "$doc" "$rapports/$societe/$societe.001$ext"
fi
fi
done
fi
done
[^] # Re: Script achevé
Posté par -=[ silmaril ]=- (site web personnel) . En réponse au message utilisation de S_ISDIR et S_ISREG. Évalué à 1.
# 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
Aurait tu oublie la premiere maxime de la programmation utile:
"utiliser des noms de variables significatifs"
Autre chose:
tu a du cd "/home/Linux/Profils/" partout dans ton script, typiquement
une variable aurait ete tres utile au cas ou un changement du repertoire
de base arriverait.
Derniere chose:
Les shells utilisents des alias pour permettrent aux utilisateurs
de ne pas s'encombrer a retapper tout le temps les memes arguments
mais dans un script il est bon de passer outres ceux ci pour eviter un
maximum de comportement incoherents.
De plus tout les unix non pas forcement les memes emplacements
pour les commandes il est donc conseiller de creer des variables
pour toutes les commandes utilisées.
Ah et puis les cd dans un script c'est pas tres propre.
----------------------------------------------
#! /bin/bash
# Commandes
LS=/bin/ls
MV=/bin/mv
SED=/bin/sed
BASENAME=/usr/bin/basename
TAIL=/usr/bin/tail
MKDIR=/bin/mkdir
# Variables :
profils="/home/Linux/Profils"
rapports="/home/Linux/Rapports"
for auditeur in $profils/* ; do
# traiter uniquement les répertoires
if [ -d "$auditeur" ] ; then
for doc in $auditeur/* ; do
# traiter uniquement les fichiers
if [ -f "$doc" ] ; then
base=`$BASENAME $doc`
# on extrait du nom du rapport le nom de la société
# c'est à dire tout ce qui est avant le dernier point
societe=${base%*.*}
# on récupère l'extension du rapport à classer
# c'est à dire tout ce qui est après le dernier point
ext=.${base##*.}
# un répertoire au nom de la société existe-t-il déjà?
if [ -d "$rapports/$societe" ] ; then
# on extrait de la liste le numero du dernier fichier ajouté
# (celui dont le nombre est le plus grand)
d=$($LS -1 "$rapports/$societe" | $TAIL -1 | sed 's/*\.\([0-9]+\)\.*/1円/g')
# on incrémente ce numéro de 1
# on lui accolle 2 '0'
d=00$(($d + 1))
# on extrait les 3 premiers chiffres (à partir de la droite)
d=$(echo $d | sed 's/^0*\([0-9]\{3\}\)/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 "$doc" $rapports/$societe/$societe.$d$ext"
else
# on crée un répertoire au nom de la société
$MKDIR "$rapports/$societe"
# on y déplace alors le rapport en lui attribuant le numéro '001'
$MV "$doc" "$rapports/$societe/$societe.001$ext"
fi
fi
done
fi
done