Me revoilà.
Alors j'ai essayé ton script et j'ai eu quelques problemes qui m'ont forcé à cogiter plus que d'habitude.
1- j'ai eu du mal avec le
/bin/sh, alors je suis passé sur le
/usr/local/bin/bash2- j'avais une erreur sur la ligne :
if [ "$FIN" != "" ] ; thenil évaluait bien $FIN mais m'indiquait la valeur évaluée comme "
command not found"
3- le masque de recherche
*-??.log (double "??") ne prenait pas en compte les
*-?.log (simple "?")
4- j'avais un probleme avec
NOUVEAU=$DEBUT\_$FIN car il me mettait le caractère "\" dans le nom de fichier. Et si j'enlevais le "\" dans le script, alors $NOUVEAU ne recevait pas de valeur.
Du coup après 1 ou 2 heures passé dans "VI" à triturer le script je suis arrivé au résultat suivant :
Code:#!/usr/local/bin/bash
function renomer {
DEBUT=`echo $i | cut -d- -f1-3`
FIN=`echo $i | cut -d- -f4`
echo "fichier : $i"
echo "DEBUT : $DEBUT"
echo "FIN : $FIN"
if [ "$FIN" != "" ]; then
NOUVEAU="$DEBUT"_"$FIN"
echo "NOUVEAU : $NOUVEAU"
mv $i $NOUVEAU
fi
}
for i in `ls -1 *-??.log`
do renomer
done
for i in `ls -1 *-?.log`
do renomer
done

Par contre je suis certain qu'il y avait moyen de faire plus simple (ne pas avoir à faire 2 boucles "for i ...") en faisant que le masque de recherche engloble à la fois les
-??.log et les
-?.logEt puis, pour les nombreux tests, j'avais aussi un p'tit script pour supprimer et recréer les fichiers à la volée :
Code:#!/usr/local/bin/bash
prefixe="Domaine_2012-07-17-"
suffixe=".log"
rm ./*.log
for i in {1..30}
do
touch $prefixe$i$suffixe
done